我有接口IModule
和幾個實現它的類。 在測試中,我需要創建實現該接口的每個類型(類)的實例。 是可能的(與StructureMap)?.NET - 創建實現特定接口的每種類型的實例
0
A
回答
3
我不熟悉StructureMap。無論如何,你需要有實現IModule的類型列表,然後在列表中創建每種類型的對象。
要獲得類型列表中動態的,也可以是:
var types =
from asm in AppDomain.CurrentDomain.GetAssemblies()
from type in asm.GetType()
where !type.IsAbstract
where typeof(IModule).IsAssignableFrom(type)
select type;
來實例化類型:
IModule[] instances = (
from type in types
select (IModule)Activator.CreateInstance(type))
.ToArray();
3
做到這一點使用StructureMap:
var container = new Container(x => x.Scan(scan =>
{
scan.TheCallingAssembly(); // there are options to scan other assemblies
scan.AddAllTypesOf<IModule>();
}));
var allInstances = container.GetAllInstances<IModule>();
+0
完美的作品。謝謝。 – Feryt 2010-05-06 08:39:58
相關問題
- 1. 根據類名創建實現接口的類的實例?
- 2. 創建實現通用接口的類的實例
- 3. 在C#中實現一個.NET接口實例化IronPython類型
- 4. 實例化使用反射實現特定接口的Java類
- 5. 實例化實現特定接口的所有類
- 6. 創建接口類java的實例
- 7. 創建接口子類的實例
- 8. 創建一個實現接口的類
- 9. 獲取實現接口的每個類的實例
- 10. 特定類型的實現類使用的接口
- 11. 確定類型實現的接口
- 12. 無法創建抽象類或接口接口的實例類型
- 13. 從Java接口類創建實例
- 14. 實例化實現通用接口實例的所有類
- 15. 創建實現接口
- 16. 將接口實例分配給實現該接口的類
- 17. 實現具有特定類型的多態Java接口
- 18. 如何創建從實現接口的基類派生的實例列表?
- 19. 綁定類型暗示接口實現
- 20. 創建實現一個特定的接口
- 21. 實現內部接口的創建類型
- 22. 類型定義:創建模塊實例
- 23. 無法創建類型爲X的實例。類型是一個接口或抽象類,不能實例化
- 24. 如何創建ICLRAppDomainResourceMonitor接口的實例?
- 25. 無法創建接口的實例。 IPagedList
- 26. System.MissingMethodException:無法創建接口的實例
- 27. 無法創建接口的實例(PagedList)
- 28. 通過實現接口創建單例類有什麼好處?
- 29. 如何創建接口的實現,即使用其他接口的特定實現?
- 30. 實現某種類型的ITaggable接口的最佳方式
做工精細,但asm.GetTypes()應該被過濾以不返回接口,因爲它也返回IModule。 ... GetTypes()。Where(t =>!t.IsInterface)... – Feryt 2010-05-05 10:01:33
@Feryt:我在答案中添加了'where.type.IsAbstract'(將答案轉換爲LINQ後)。這不僅僅解決了'!t.IsInterface'問題。請注意,這不會解決所有問題,因爲某些類型可能缺少公共默認構造函數或者是泛型類型定義。 – Steven 2010-05-05 10:52:12