我网上看文档,
解释如下:Unity 容器提供了RegisterInstance 方法,允许注册依赖注入映射 – 返回对单一已存在对象实例的引用。这一方法接收一个类型参数(对象接口或类型)和一个已存在的对象实例
下面的代码演示如何使用RegisterInstance 方法注册实现了IMyService接口的、已存在的对象实例。DataService myDataService = new DataService();
EmailService myEmailService = new EmailService();IUnityContainer myContainer = new UnityContainer(); myContainer.RegisterInstance<IMyService>(myDataService);
myContainer.RegisterInstance<IMyService>("Email", myEmailService);IMyService theDataService = myContainer.Resolve<IMyService>();
IMyService theEmailService = myContainer.Resolve<IMyService>("Email");
而RegisterInstance 返回对单一已存在对象实例的引用,而这个对象实例是指哪个呢?
解释如下:Unity 容器提供了RegisterInstance 方法,允许注册依赖注入映射 – 返回对单一已存在对象实例的引用。这一方法接收一个类型参数(对象接口或类型)和一个已存在的对象实例
下面的代码演示如何使用RegisterInstance 方法注册实现了IMyService接口的、已存在的对象实例。DataService myDataService = new DataService();
EmailService myEmailService = new EmailService();IUnityContainer myContainer = new UnityContainer(); myContainer.RegisterInstance<IMyService>(myDataService);
myContainer.RegisterInstance<IMyService>("Email", myEmailService);IMyService theDataService = myContainer.Resolve<IMyService>();
IMyService theEmailService = myContainer.Resolve<IMyService>("Email");
而RegisterInstance 返回对单一已存在对象实例的引用,而这个对象实例是指哪个呢?
解决方案 »
- 怎样在执行服务器事件后 获取 鼠标光标
- 从客户端拿到操作系统类型后,算法??
- 高分求助 新手问题 如何在页面中显示文字,链接,和图片等等...
- 提两个也许初级,但我不会的问题!1-SQL语句2-datatable(50分)
- 怎么样把这个数组绑定到Dropdownlist?
- 怎样验证DataGrid单元格文本?(在线急等!!!)
- 如何给动态生成的button,添加click事件?(最好是vb.net)?-在线等待
- CSS循环显示的图不连贯
- 在.NET中怎样生成一个label并在codebehind中指定其宽、高、背景色还有位置呀?
- 版主老兄:怎么判断一个excel工作簿中有某个sheet,谢谢!
- 谁能帮我细解一下javascript??
- 局部变量 的 线程问题
myContainer.RegisterInstance <IMyService>("Email", myEmailService); 这两句是注册而非获取IMyService theDataService = myContainer.Resolve <IMyService>();
//等同 IMyService theDataService=(IMyService) new myDataService();
IMyService theEmailService = myContainer.Resolve <IMyService>("Email");
这两句才是获取实际上这个基本等同于 基于hashTable的单件模式的应用,你google一下:基于hashTable的单件模式
自然就清楚了
{ hashtable ht=new hashtable()
void RegisterInstance <T>(T obj)
{ ht.add(obj.getType().tostring(),obj); }
void RegisterInstance <T>(string key ,T obj)
{
ht.add(key,obj);
}
T Resolve <T>(string key)
{
return (T)ht[key];
} }ps:当然这是一个简单的推理实现,其内部有更完善的判定机制,unity本身是个开源的东西,想了解详细的请自己看的源代码
那么应该使用RegisterInstance方法
RegisterInstance 用于将一个已创建的对象实例注册成单件类型映射
RegisterInstance<T>(T instance)
T t= new T();
container.RegisterInstance<接口>(t);