クラスのインスタンスを返すサードパーティのライブラリがあります。Unity
それは私の管理外ですが、そのパブリック プロパティに注入するために使用したいと考えています。クラスは部分的でも継承的でもないため、そのプロパティに追加できないため、 XML構成をDependecyAttribute
使用して指定を行うことができるかどうか疑問に思っています。Unity
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
(Service プロパティの Null 参照) に機能し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)