GlobalCache在网站中声明,我在业务层创建另一个需要在GlobalCache上调用方法的对象。由于两者都引用了接口的“契约”程序集,我首先想到的是在“契约”中定义IGlobalCache并使用Ninject在业务层中实例化IGlobalCache来调用该方法。
问题是该方法是静态的,您不能在接口中声明静态方法。如何从一个不知道该方法所属类型的程序集中调用静态方法?
答案 0 :(得分:2)
您可以使用该方法创建一个接口(显然是非静态的),并在一个使用静态方法知道该类的程序集中创建此接口的实现。这个实现只是使用静态方法委托给类。
在A组(合同)中:
public interface IGlobalCache
{
void Foo();
}
在大会B(商业)中:
class FooBar
{
public FooBar(IGlobalCache globalCache) { /*...*/ } // dependency injection
}
在汇编C中:
class GlobalCacheImpl : IGlobalCache
{
public void Foo()
{
GlobalCache.FooStatic();
}
}
答案 1 :(得分:1)
您可以在另一个程序集中设置静态类GlobalCache,从您的网站项目或业务项目添加此程序集的引用。你的GlobalCache类是技术类,他必须存在于技术项目中