日期:2014-05-17  浏览次数:20462 次

IOC容器相关问题
我现在用的autofac  IOC容器
发现一个问题:所有的注册都是在网站启动时注册
但是我现在希望在具体页面执行的时候选择某个接口的具体实现
例如:

interface ISay{ 
 string Say(); 
}

class Cat :ISay{
 string Say(){ return "喵"; }
}

class Dog:ISay{
 string Say(){ return "汪"; }
}



我现在页面有个下拉框可以选择猫、狗
当我提交页面的时候会根据下拉框的值通过IOC容器动态的实例化对象给ISay接口

请问这个通过IOC容器可以实现吗
IOC autofac

------解决方案--------------------
 在进行容器注册的时候,可以添加一个名称
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");