すべてのオープンジェネリックタイプをデフォルト規約で登録しようとしています。 以下のようなデフォルトの規約を使用すると、自分のタイプが正しく登録されていることを確認できます。StructureMapはオープンジェネリックをデフォルト規約で正しく登録することができません。
しかし、私はそれを解決しようとすると、次のエラーがスローされます。
んが、デフォルトのインスタンスが登録されていないと、自動的にタイプのために決定することはできませんここにIGenericClass "
public DefaultRegistry()
{
Scan(
scan =>
{
scan.AssembliesFromApplicationBaseDirectory(
a => a.FullName.StartsWith("StructureMapApp"));
scan.WithDefaultConventions();
});
}
var container = new Container(x =>
{
x.AddRegistry(new DefaultRegistry());
});
container.WhatDoIHave();
var result = container.GetInstance<IGenericClass<DummyClass>>();
container.WhatDoIHave()結果 container.WhatDoIHaveは(ある)
私はそれを登録した場合明示的には期待どおりに動作します。
container.Configure(x => x.For(typeof(IGenericClass<>)).Use(typeof(GenericClass<>)));
var sad = container.GetInstance<IGenericClass<DummyClass>>();
ここcontainer.WhatDoIHave()
あなたがそこにある気付くかもしれとして明示しながら、デフォルトの規則で作られた2つのregistries.Theレジストリの間のわずかな差がアセンブリとモデル名を含んを結果は1つは持っていない。
自動明示的にそれらのすべてを提供することなく、開いているすべてのジェネリック医薬品を登録する方法はありますか?
DefaultRegistryは何であるとそれを追加しますか? – Evk
これを追加するのを忘れました、私はそれを追加しました – erhan355
私が知る限り - デフォルトの規約はそうするつもりはありません、あなたはカスタムレジストレーション規約を書く必要があります。 – Evk