c# – Unity注册实例并解析
我写了一个类,它有一些从unity容器中解析出来的依赖项.
从我的主类我创建一个新对象 MyObject myObject = new MyObject(); 我用我的Unity容器注册它 UContainer.RegisterInstance<MyObject>(myObject,new ExternallyControlledLifetimeManager()); 我创建了需要它作为依赖的类型 ConsumerObject consumer = new ConsumerObject(); 消费者看起来像这样: public class ConsumerObject { public ConsumberObject() { theObject = (MyObject)UContainer.Resolve(typeof(MyObject)); } } 这引发了一个异常:
为什么我的解决方案会尝试在该类型上调用另一个contsructor?我已经创建了它并注册了实例..我也尝试过:theObject = UContainer.Resolve< MyObject>();似乎没有任何区别.. 谢谢 解决方法
我认为问题是你使用ExternallyControlledLifetimeManager.在这种情况下,Unity容器仅包含对您的实例的弱引用.当您尝试解决时,您的实例已经被垃圾收集了.这就是为什么.RegisterInstance()的默认LifeTimeManager是ContainerControlledLifeTimeManager.
而Darrel Miller的案例也有效,因为它还没有GC编辑. 尝试以这种方式注册您的实例: UContainer.RegisterInstance<MyObject>(myObject); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |