Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ninject&;中将对象转换为包装器对象;C#?_C#_Ninject_Wrapper - Fatal编程技术网

如何在Ninject&;中将对象转换为包装器对象;C#?

如何在Ninject&;中将对象转换为包装器对象;C#?,c#,ninject,wrapper,C#,Ninject,Wrapper,我有一些没有接口的第三方类的包装器类,我需要在一个相当坚实的C代码块中引用它 目前,我有一个静态函数将实例转换为包装器实例 示例代码 class A { public string Name; } interface IAWrapper { string Name { get; set; } } class AWrapper : IAWrapper { private A Instance; public AWrapper(A instance) {

我有一些没有接口的第三方类的包装器类,我需要在一个相当坚实的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);
var a=newa(){Name=“bob”};
var wrapped=kernel.wrapp(a);
其中,
wrapped
将是
AWrapper
的一个实例,并为
实例
传递了
a

Ninject有办法做到这一点吗?要请求包装类接口、要包装的实例并获取包装的类


(很抱歉,我相信有更清楚的方法可以问这个问题,但如果我知道如何更好地问,我可能也知道答案。:)

假设内核已经绑定,您可以使用
ConstructorArgument
指定构造函数参数。构造函数参数的名称是类的第一个参数

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

其中,
wrapped
将是
AWrapper
的一个实例,它是为构造函数中的
实例
参数传递的。您只需调用
newawrapper(newa{Name=“bob”})