StructureMap和开放泛型类型

时间:2012-05-18 15:00:50

标签: c# structuremap

我无法使用StructureMap IAssemblyScanner.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>();

有效。

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

0 个答案:

没有答案