3
我想配置替代構造函數參數,當一個請求的類型被注入到幾個類中時。在以前的StructureMap版本中,它看起來很像第一個DSL example on the document page,但我很難弄清楚如何使用新語法來配置它。StructureMap 2.5註冊表語法
我現在得到的是一個具有一個具體實現的接口,但我需要構造函數參數根據它被注入的對象進行更改。例如:
interface IInterface{}
class Concrete : IInterface
{
public Concrete(string param) {}
}
class ConsumerOne
{
public ConsumerOne(IInterface i) {} // Concrete(param) to be "One"
}
class ConsumerTwo
{
public ConsumerTwo(IInterface i) {} // Concrete(param) to be "Two"
}
class MyRegistry : Registry
{
public MyRegistry()
{
For<IInterface>()
.Use<Concrete>
.Ctor<string>("param")
.Is(/* "One" if being injected into ConsumerOne,
"Two" if being injected into ConsumerTwo */);
}
}
我想我也許可以用.AddInstance(x => {})
爲此,For<IInterface>()
後,但我有麻煩發現如何做到這一點。任何幫助或建議,將不勝感激!
您應該使用添加而不是用於IInterface註冊,因爲它不是您正在註冊的默認設置。通過制定一項公約可以解決潛在的缺點。 – PHeiberg 2010-09-28 11:18:12