私は次のクラスを持っています:
public interface IRenderer<T>
{
string Render(T obj);
}
public class Generic<T> { }
public class SampleGenericRenderer<T> : IRenderer<Generic<T>>
{
public string Render(Generic<T> obj)
{
throw new NotImplementedException();
}
}
ObjectFactory.GetInstance<IRenderer<Generic<string>>>();
でStructureMapを呼び出して受信できるようにしたいと思い
ますSampleGenericRenderer<string>
。
現在、次の登録を使用しており、GetInstanceを呼び出すとこのエラーが発生します。"タイプのオブジェクトをキャストできません:
ConsoleApplication1.SampleGenericRenderer'1 [ConsoleApplication1.Generic'1[System.String]]'を入力して'ConsoleApplication1.IRenderer'1[ConsoleApplication1.Generic'1[System.String]]と入力します。
public class CoreRegistry : Registry
{
public CoreRegistry()
{
Scan(assemblyScanner =>
{
assemblyScanner
.AssemblyContainingType(typeof(IRenderer<>));
assemblyScanner.AddAllTypesOf(typeof(IRenderer<>));
assemblyScanner
.ConnectImplementationsToTypesClosing(
typeof(IRenderer<>));
});
}
}
SampleGenericRenderer<string>
代わりに作成するようにStructureMapを構成する方法はありますSampleGenericRenderer<Generic<string>>
か?
更新:依存関係のこのサブセットに対して、自分で型の構築を行うことになりました。コンテキストバインディングとサポートされていない多くの汎用バインディングを組み合わせているため、これが最もクリーンなソリューションであることがわかりました。