统一容器可以将自身的引用作为构造函数参数传递吗?
问题描述:
有没有办法让统一容器将自身传递给对象?
Is there a way for a unity container to pass itself to an object?
即:
public class Something {
public Something(IUnityContainer container) {
...
}
}
答
简短的回答是肯定的.
当您使用 Resolve
方法时,这应该会自动传递.
This should be passed automatically when you use the Resolve
methods.
例如:
IUnityContainer container = new UnityContainer();
var something = container.Resolve<Something>();
此外,如果您想研究它,这与 Prism(在 CodePlex 上)使用的技术相同.
Additionally, this is the same technique that Prism (on CodePlex) uses if you want to look into that.
更新添加的测试:
[TestClass]
public class Spike
{
[TestMethod]
public void unityTest()
{
var container = new UnityContainer();
var something= container.Resolve<Something>();
Assert.AreSame(container, something.Container);
// This passes. Success.
}
}
public class Something
{
public Something(IUnityContainer container)
{
Container = container;
}
public IUnityContainer Container { get; set; }
}