IOC容器相关问题
我现在用的autofac IOC容器
发现一个问题:所有的注册都是在网站启动时注册
但是我现在希望在具体页面执行的时候选择某个接口的具体实现
例如:
interface ISay{
string Say();
}
class Cat :ISay{
string Say(){ return "喵"; }
}
class Dog:ISay{
string Say(){ return "汪"; }
}
我现在页面有个下拉框可以选择猫、狗
当我提交页面的时候会根据下拉框的值通过IOC容器动态的实例化对象给ISay接口
请问这个通过IOC容器可以实现吗
------解决方案-------------------- 在进行容器注册的时候,可以添加一个名称
builder.Register(cat =>new Cat()).Named<ISay>("Cat");
builder.Register(dog=>new Dog()).Named<ISay>("Dog");
IContainer container = builder.Build();
获取时候可以可能通过名称来获取
container.ResolveNamed<ISay>("Cat/Dog");