簡體   English   中英

Unity –通過傳遞構造函數參數來解析對象

[英]Unity – Resolving objects by passing constructor parameter

我有以下代碼:

interface IParent
{ }
class Parent1 : IParent
{
  public Parent1 (Document doc)
  {
  }
}
class Parent2 : IParent
{
  public Parent2 (Document doc)
  {
  }
}

我的統一容器如下配置:

Container.RegisterType<IParent, Parent1>("Parent1");
Container.RegisterType<IParent, Parent2>("Parent2");

我試圖通過將Document的實例傳遞到其構造函數來解析IParent對象(Parent1或Parent2類型):

string parent = "Parent1";
IParent parent = Container.Resolve<IParent>(parent, new ParameterOverride("Document", doc));

這對我不起作用。 使用調試器進入上面的行,我進入了構造函數,但是Document為空。 即它看起來像一個新的Document(),而不是我在調用Resolve時傳遞的實際文檔。

我的問題是如何傳遞doc實例來解析IParent的具體類型?

干杯,

您應該在構造函數中注冊對Document具有依賴關系的Parent1

    Container.RegisterType<IParent, Parent1>("Parent1", new InjectionConstructor(doc));

那么您可以解析該類的實例:

        string parentClass = "Parent1";
        IParent parent = Container.Resolve<IParent>(parentClass);

解決方案是使用構造器中聲明的參數名稱而不是實際類型,例如:

IParent parent = Container.Resolve<IParent>(parent, new ParameterOverride("doc", doc));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM