は私が持っている場合:Unity - 条件付きで子スコープを作成するにはどうすればいいですか?
container.RegisterType<ICalculationBuilder, CalculationBuilder>();
私は新しいインスタンス私はICalculationBuilderを解決するたびに取得します知っています。
私は、Ifが行うことを知っている:
var childContainer = container.CreateChildContainer();
childContainer.RegisterType<ICalculationBuilder, CalculationBuilder>(new HierarchicalLifetimeManager());
その後、私は同じインスタンス私はその子の範囲内ICalculationBuilderを解決するたびに取得します。
しかし、与えられた:
class CalculationBuilder
{
CalculationBuilder(int year)
{
}
}
はどのようにして各年のCalculationBuilderの別のインスタンスを取得することができますか?私が行うので、もし:次に
var builder1 = childContainer.Resolve(typeof(ICalculationBuilder), new DependencyOverride<int>(2017));
var builder2 = childContainer.Resolve(typeof(ICalculationBuilder), new DependencyOverride<int>(2017));
var builder3 = childContainer.Resolve(typeof(ICalculationBuilder), new DependencyOverride<int>(2018));
Assert.Same(builder1, builder2) would be true
と
Assert.NotSame(builder2, builder3) would be false
計算自体にとって年が重要なのであれば、あなたが作成しているものを作成するために呼び出す方法の一部にする必要があります。 – Icepickle
ありがとうございます。残念ながらそれは不可能です。計算は年ごとに変わることはありません。計算ビルダは計算Aを構築し、次に計算Bを呼び出して計算Bを構築することができる。年は、計算の特定のバージョンがあるかもしれないので、ビルダーに渡されます。B - >計算B2017。 – Adam