GlobalCache在网站中声明,我正在业务层中创建另一个需要调用GlobalCache方法的对象。既然这两个引用了一个“契约”接口程序集,我的第一个想法是在“契约”中定义IGlobalCache,并使用Ninject在业务层中实例化IGlobalCache以调用该方法。对在业务层中声明的对象在网站中声明的对象调用静态方法?
问题是该方法是静态的,并且您不能在接口中声明静态方法。你还可以从不知道方法所属类型的程序集中调用静态方法吗?
GlobalCache在网站中声明,我正在业务层中创建另一个需要调用GlobalCache方法的对象。既然这两个引用了一个“契约”接口程序集,我的第一个想法是在“契约”中定义IGlobalCache,并使用Ninject在业务层中实例化IGlobalCache以调用该方法。对在业务层中声明的对象在网站中声明的对象调用静态方法?
问题是该方法是静态的,并且您不能在接口中声明静态方法。你还可以从不知道方法所属类型的程序集中调用静态方法吗?
您可以使用该方法创建一个接口(显然是非静态的),并在使用静态方法知道该类的程序集中创建此接口的实现。这个实现只是用静态方法委托给类。
在大会A(合同):
public interface IGlobalCache
{
void Foo();
}
在大会B(商务):
class FooBar
{
public FooBar(IGlobalCache globalCache) { /*...*/ } // dependency injection
}
在大会C:
class GlobalCacheImpl : IGlobalCache
{
public void Foo()
{
GlobalCache.FooStatic();
}
}
您可以设置静态类GlobalCache在另一个程序集中,从您的网站项目或业务项目中添加引用该程序集。您的GlobalCache类是技术类,他必须存在于技术项目
不幸的是,我将无法将GlobalCache移动到另一个项目。 – adam0101 2012-07-24 13:30:29