我无法使用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
是泛型类中的接口定义,所以这使它成为一个开放的泛型类型吗?