簡體   English   中英

如何在Ninject和C#中將對象轉換為包裝對象?

[英]How to convert an object to a wrapper object in Ninject & C#?

我有一些沒有接口的第三方類的包裝器類,我需要在相當牢固的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將是AWrapper一個實例,並為Instance傳遞a

Ninject有辦法做到嗎? 要請求包裝器類接口,需要包裝實例,並取回包裝器類?

(我很抱歉,我敢肯定有很多清楚的方法可以提出這個問題,但是如果我知道如何更好地提出這個問題,我也可能會知道答案。:))

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

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

wrapped AWrapper地方是AWrapper一個實例,它在構造函數中傳遞a instance參數。

暫無
暫無

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

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