结构图和泛型类型

时间:2010-04-15 11:54:00

标签: c# generics structuremap

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

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

例如 - 主要类是

public class MyClass<TDomainObject> : IMyClass<TDomainObject> 
     where TDomainObject : DomainObject

所以示例用法是

IMyClass<Person> p = new MyClass<Person>;
IMyClass<Employer> p = new MyClass<Employer>;

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

如何将其加载到StructureMap中?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

经过一番搜索后,我发现你可以使用Structuremap 2.5+上的自动注册功能,使用泛型而不是泛型,就像使用非泛型一样。

只需创建您的容器,如:

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