我们正在尝试在DAL之上构建某种类型的层,以使用泛型公开某些存储库方法的接口。
例如:
public interface A
{
void Do_A();
}
public interface B
{
void Do_B();
}
public void Main()
{
Exposer<A>.Do_A();
Exposer<B>.Do_B();
}
有可能这样做吗?
最佳答案
从技术上讲,这不是“单个类”,因为Exposer<A>
与Type
不同。但是,最终,这与大多数IoC / DI容器看起来并没有太大的区别……如果这是例如StructureMap(仅作为示例),则可以考虑:
container.GetInstance<A>().Do_A();
container.GetInstance<B>().Do_B();
当然,您需要配置容器以了解具体的
Exposer<B>
和A
实现的来源!用于StructureMap is shown here,但有plenty to choose from。如果直接说的话,那么:否。您不能:
class Exposer<T> : T {...} // non-working code to implement the interface T
但是,您可以上一些课:
class Exposer : A, B {...}
然后投射:
A a = Exposer;
a.Do_A();
B b = Exposer;
b.Do_B();