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