1

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はジェネリック クラスのインターフェイス定義なので、オープン ジェネリック型になりますか?

4

0 に答える 0