2017-03-01 52 views
0

我有一些沒有接口的第三方類的包裝類,我需要在一個相當固定的C#代碼塊中引用它。如何將對象轉換爲Ninject和C#中的包裝對象?

目前,我有一個靜態函數將實例轉換爲包裝器實例。

示例代碼。

class A 
{ 
    public string Name; 
} 

interface IAWrapper 
{ 
    string Name { get; set; } 
} 

class AWrapper : IAWrapper 
{ 
    private A Instance; 
    public AWrapper(A instance) 
    { 
     Instance = instance; 
    } 
    public string Name 
    { 
     get 
     { 
      return Instance.Name; 
     } 
     set 
     { 
      Instance.Name = value; 
     } 
    } 
} 

我要像

var a = new A() {Name = "bob"}; 
var wrapped = kernel.wrap<IAWrapper>(a); 

的功能中wrapped將是AWrapper一個實例,它是通過對aInstance

不Ninject擁有一個辦法做到這一點?要請求包裝類接口,要包裝的實例,並取回包裝的類?

(我的道歉,我敢肯定有更清晰的方式來問這個,但是如果我知道怎麼問更好,我可能知道答案,以及:))。

+0

你不需要Ninject這個。你可以簡單地調用'new AWrapper(new A {Name =「bob」})''。 – Steven

回答

1

假設內核已經綁定,你可以使用ConstructorArgument指定構造函數參數。構造函數參數的名稱是該類的第一個參數。

var a = new A() { Name = "bob" }; 
var instance = new Ninject.Parameters.ConstructorArgument("instance", a); 
var wrapper = kernel.Get<IAWrapper>(instance); 

wrapped將是AWrapper一個實例,並且它通過了a在構造instance參數。

相關問題