StructureMapIAssemblyScanner.ConnectImplementationsToTypesClosing
メソッドで実装を取得できません。
具体的には、次の定義が与えられた場合 (Mass Transit から引用)、
public class Consumes<TMessage> where TMessage : class
{
public Consumes();
public static Consumes<TMessage>.Selected Null { get; }
public interface All : IConsumer
{
void Consume(TMessage message);
}
}
Consumes<TMessage>.All
次のように宣言された複数の実装があります。
class TrendReportRequestConsumer : Consumes<TrendReportRequest>.All
{ ...
class CountReportRequestConsumer : Consumes<CountReportRequest>.All
{ ...
を使用して構造マップをセットアップすると、
Scan(scan =>
{
scan.TheCallingAssembly();
scan.IncludeNamespaceContainingType<TrendReportRequestConsumer>();
scan.ConnectImplementationsToTypesClosing(typeof(Consumes<>.All));
scan.WithDefaultConventions();
});
機能しませんが、実装を明示的に追加すると機能しません
For<Consumes<TrendReportRequest>.All>().Use<TrendReportRequestConsumer>();
For<Consumes<CountReportRequest>.All>().Use<CountReportRequestConsumer>();
できます。
オープンジェネリック型の私の理解は間違っていますか??? すなわち。Consumes<TMessage>.All
はジェネリック クラスのインターフェイス定義なので、オープン ジェネリック型になりますか?