1
我知道我可以指定一個構造函數來與DefaultConstructor屬性一起使用。但是,我也希望能夠在某些情況下使用不同的構造函數。有什麼辦法可以註冊這兩個構造函數與StructureMap,然後選擇哪一個使用時調用ObjectFactory.GetInstance()?選擇使用哪個構造函數與StructureMap
我知道我可以指定一個構造函數來與DefaultConstructor屬性一起使用。但是,我也希望能夠在某些情況下使用不同的構造函數。有什麼辦法可以註冊這兩個構造函數與StructureMap,然後選擇哪一個使用時調用ObjectFactory.GetInstance()?選擇使用哪個構造函數與StructureMap
我不相信你可以在StructureMap中做到這一點。你可以把你正在尋找的獨立構造函數放到適配器類中嗎?然後你的代碼可以依賴於必要的適配器類。
public class FirstBehavior : IBehavior
{
private WrappedClass _wrappedClass;
public FirstBehavior()
{
_wrappedClass = new WrappedClass(<first constructor>)
}
}
public class SecondBehavior : IBehavior
{
private WrappedClass _wrappedClass;
public SecondBehavior()
{
_wrappedClass = new WrappedClass(<second constructor>)
}
}
[TestFixture]
public class Test
{
[Test]
public void configure_container()
{
var container = new Container(config =>
{
config.For<IBehavior>().Use<FirstBehavior>().Named("first");
config.For<IBehavior>().Use<SecondBehavior>().Named("second");
});
container.GetInstance<IBehavior>("first").ShouldBeOfType(typeof(FirstBehavior));
container.GetInstance<IBehavior>("second").ShouldBeOfType(typeof(SecondBehavior));
}
}
哪種語言? – 2010-02-13 18:03:11
我想.net - http://structuremap.sourceforge.net/所以有重新標記。 – 2010-02-13 18:05:09
是的.net(更具體地說C#)。感謝您重新標記。 – Tevin 2010-02-14 17:43:53