StructureMap 2.6.4からStructureMap 3.1.6へのアップグレード後、ネストされたコンテナにあるジェネリックインターフェイスの登録が機能しなくなり、理由が見つかりませんなぜ彼らはもはや働かない。stucturemapのネストされたコンテナへのジェネリックインターフェイスと実装の登録
これは私が
StructureMap.StructureMapConfigurationException取得していますエラーです:いいえ、デフォルトのインスタンスが登録されていないと、自動的にタイプのために決定することができない「たITest < ExtendClass>」
ここではサンプルです
public class StructureMapContainerTests
{
[Test]
public void GlobalContainer()
{
var container = new Container();
container.Configure(x => x.For(typeof(ITest<>)).Use(typeof(Test<>)));
var impl = container.GetInstance<ITest<ExtendClass>>();
Debug.WriteLine(impl.Temp()); //Works
}
[Test]
public void NestedContainer()
{
var container = new Container();
var nestedContainer = container.GetNestedContainer();
nestedContainer.Configure(x => x.For(typeof(ITest<>)).Use(typeof(Test<>)));
var impl = nestedContainer.GetInstance<ITest<ExtendClass>>();
Debug.WriteLine(impl.Temp()); //Doesn't work
}
}
public interface ITest<T> where T : BaseClass
{
string Temp();
}
public class Test<T> : ITest<T> where T : ExtendClass
{
public string Temp()
{
return "OK: " + typeof(T);
}
}
public class BaseClass { }
public class ExtendClass : BaseClass { }
上記の両方のテストは、StructureMap 2.6で動作します。しかし、3.1.6では、ネストされたコンテナを使用する2番目のテストはもはや機能しません。
これが削除された機能であるか、間違って使用している場合は誰でも知っていますか? :)