我有一个接口作为构造函数参数的类。这个接口有两个实现,我想根据变量来决定在运行时使用什么实现。Autofac - 动态解析组件参数
问题是,上面的类是深入的对象heirarchy由Autofac解决,所以我不能传递参数。
像下面这样的兴趣是我想要实现的。
public interface IInterface1 {}
public interface IInterface2 {}
public class Class1 : IInterface2
{
public Class1(IInterface1 interface1)
{
}
}
public class Class2
{
public Class2(IInterface2 interface2)
{
}
}
public class Class3
{
public void GetClass2Instance(string interface1ImplementationToChoose)
{
// want to change which implementation of IInterface1 is resolved based on the interface1ImplementationToChoose variable
var class2 = container.Resolve<Class2>();
}
}
任何想法?
UPDATE:
为了澄清,这是用于由工作正常现有应用程序的现有对象分层结构。而且,对象模型比本例中显示的要大得多。因此,我并不想将工厂传递给对象图中的每个构造函数,以供图中深层的类使用。
有没有办法让IInterface1的不同实现传入Class1,而Class2不知道任何事情呢?
感谢
你说“这个接口有两种实现..”,但你的示例并没有很好地显示出来。你能否详细说明,然后我会相应地更新我的答案。 – 2010-08-05 10:25:27