我有一个第三方库返回一个类实例。它超出了我的控制范围,但我想Unity
在它的公共属性中使用它。DependecyAttribute
由于该类既不是部分的也不是继承的,所以我不能添加到它的属性中,我想知道我是否可以使用Unity
XML 配置来进行 inyection。
是否可以使用Unity's
XML 配置来配置构建依赖项?如果答案是肯定的。如何配置 XML 来做到这一点?
我试过了:
<register type="IService" mapTo="Service"> <!--Service has public constructor-->
</register>
<!--ThirdPartyObj has no interface and no public constructor-->
<register type="ThirdPartyObj " mapTo="ThirdPartyObj">
<!-- Inject the property "Service" -->
<property name="Service" /> //type of the property is IService
</register>
如果Unity Resolve
ThidPartyObj
购买不工作BuilUp
(服务属性中的空引用)并且不能Resolve
ThirdPartyObj
因为没有公共构造函数,此配置将工作。
我想要归档的简单示例:
IUnityContainer uc = New UnityContainer() //create container
container.LoadConfiguration() // load from XML config
ThirdPartyObj foo = ThirdPartyLibrary.getFooInstace() //get third party instance
container.BuildUp(foo.getType, foo) //inyect dependencies
Console.WriteLine(foo.Service.getServiceMessage)