结构图和generics类型

我的情况与我见过的其他情况有点不同。 为了澄清,这不是正常的问题,例如; 类似于IAClass映射到AClass等 – 这涉及到每个接口基本上使用一个具体的类。

这涉及到一个通用类,但我希望能够加载它的所有可能用法。

例如 – 主要类是

public class MyClass : IMyClass where TDomainObject : DomainObject 

这样的例子用法就是

 IMyClass p = new MyClass; IMyClass p = new MyClass; 

即对于所有DomainObjects,我希望能够加载MyClass 。 所以你可以看到我没有为每个声明使用特定的类,它们都使用相同的类。

我如何将其加载到StructureMap中?

这实际上是对generics的更直接的使用。

 For(typeof(IMyClass<>)).Use(typeof(MyClass<>)) 

如果您使用的是旧版本的Structuremap,请使用更详细的ForRequestTypeTheDefaultIsConcreteType

经过一些搜索,我发现你可以使用Structuremap 2.5+上的自动注册function,使用generics而不是generics,就像你可以使用非generics一样。

只需创建您的容器:

 return new Container(x => { x.Scan(y => { y.TheCallingAssembly(); y.AddAllTypesOf(typeof(IMyClass<>)); y.WithDefaultConventions(); }); });