2010-04-15 103 views
4

我有一種情況與我見過的其他情況有點不同。爲了澄清,這不是正常的問題,例如;像IAClass映射到AClass等 - 這涉及到基本上每個接口使用一個具體的類。結構圖和泛型類型

這涉及到有一個單一的泛型類,但我想能夠加載它的所有可能的用法。

EG - 主類是

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

所以示例用法是

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

即對於所有DomainObjects,我希望能夠加載MyClass <>。所以你可以看到我沒有爲每個聲明使用特定的類,它們都使用相同的類。

我該如何將這個載入到StructureMap中?

回答

3

這實際上是泛型更直接的用法。

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

如果您正在使用Structuremap的舊版本,代替了更詳細的ForRequestTypeTheDefaultIsConcreteType

+0

這是一個非常有用的技巧。我沒有線索StructureMap可以用這種方式處理泛型。 – 2010-04-15 12:39:40

0

經過一番搜索之後,我發現您可以在Structuremap 2.5+上使用自動註冊功能,並使用泛型進行約定,就像使用非泛型一樣。

只需創建像你的容器:

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