1

我无法使用 StructureMapIAssemblyScanner.ConnectImplementationsToTypesClosing方法来获取我的实现。

具体来说,给定以下定义(从公共交通中提取),

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>();

有用。

我对开放泛型类型的理解有问题吗???IE。Consumes<TMessage>.All是泛型类中的接口定义,所以这是否使其成为开放的泛型类型?

4

0 回答 0