如何在 Ninject 和 C# 中将对象转换为包装器对象?
How to convert an object to a wrapper object in Ninject & C#?
我有一些没有接口的第 3 方 classes 的包装器 classes,我需要在相当可靠的 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
的一个实例,它已通过 a
用于 Instance
Ninject有办法做到这一点吗?请求包装器 class 接口,要包装的实例,并取回包装的 class?
(抱歉,我确信有更明确的方法可以问这个问题,但如果我知道如何更好地问这个问题,我可能也会知道答案。:))
假设内核已经绑定,您可以使用 ConstructorArgument
指定构造函数参数。构造函数参数的名称是 class.
的第一个参数
var a = new A() { Name = "bob" };
var instance = new Ninject.Parameters.ConstructorArgument("instance", a);
var wrapper = kernel.Get<IAWrapper>(instance);
其中 wrapped
将是 AWrapper
的实例,并且在构造函数中为 instance
参数传递了 a
。
我有一些没有接口的第 3 方 classes 的包装器 classes,我需要在相当可靠的 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
的一个实例,它已通过 a
用于 Instance
Ninject有办法做到这一点吗?请求包装器 class 接口,要包装的实例,并取回包装的 class?
(抱歉,我确信有更明确的方法可以问这个问题,但如果我知道如何更好地问这个问题,我可能也会知道答案。:))
假设内核已经绑定,您可以使用 ConstructorArgument
指定构造函数参数。构造函数参数的名称是 class.
var a = new A() { Name = "bob" };
var instance = new Ninject.Parameters.ConstructorArgument("instance", a);
var wrapper = kernel.Get<IAWrapper>(instance);
其中 wrapped
将是 AWrapper
的实例,并且在构造函数中为 instance
参数传递了 a
。