0
A
回答
7
像th一樣是,使用Type.MakeGenericType
:
Type arg = Type.GetType(s);
Type definition = typeof(IRepo<>);
Type concrete = definition.MakeGenericType(arg);
注意Type.GetType(string)
自帶的幾個注意事項:
- 您需要指定類型的全名,包括名字空間
- 如果你想從一個類型除了
mscorlib
或調用程序集以外的程序集,您必須包含程序集名稱 - 如果您包含程序集名稱並且它是強類型的,則需要包含版本的完整程序集名稱等
4
Type t = typeof (IRepo<>).MakeGenericType(Type.GetType(s));
1
你可以做到以下幾點:
var someTypeName = "Foo";
var someType = Type.GetType("Namespace.To." + someTypeName);
typeof(IRepo<>).MakeGenericType(someType);
你首先需要獲得的Foo
的Type
,然後可以傳遞到Type.MakeGenericType。
相關問題
- 1. 對於.Net,沒有Hashset <T, G>?
- 2. 是否有可能從T []獲得IEnumerator <T>?
- 3. 使用服務負責人獲得TGT
- 4. StructureMap中的優先級 - 對於<T>或AddRegistry <T>?
- 5. EntityFramework - 如何獲得ObjectSet <T>
- 6. 對於基類,我應該使用ObjectSet <T>還是IDbSet <T>存儲庫模式?
- 7. 沒有給定參數對應於「IOwinContext.Get <T>(串)」
- 8. 如何獲得Lambda表達式上的謂詞<T>值?
- 9. 對於列表<T>。「添加
- 10. static_cast <T&&>(t)快於std :: forward <T>(t)用於編譯?
- 11. 我如何創建對象<T>?
- 12. 我如何反映類<T>的列表<T>並獲取T?
- 13. 當T不同時,是否有可能獲得列表<T>的項目數?
- 14. C++重寫哈希<T>對於T的派生類
- 15. 對於MEF情況,Lambda表達式示例與System.Action <T>?
- 16. 當使用LINQ:XML來對象時,有可能獲得比IEnumerable <T>更多的其他集合嗎?
- 17. 獲得從IEnumerable <IEnumerable的<T>>
- 18. 我有一個類A <T>:IEnumerable <T>,我想添加IEquatable <A<T>>如果T:IEquatable <T>。我該怎麼做,並保持IEnumerable呢?
- 19. 我可以從boost :: multi_array <T, 2>獲得T **(c樣式2維數組)嗎?
- 20. IQueriable <T>對於比O(n)性能好的對象嗎?
- 21. 如何從IQueryable <T>投擲到IQueryable <U>和<Func <T, bool>>到<Func <U, bool>>以獲得樂趣?
- 22. 枚舉所有SomeClass <T>所有對象T
- 23. VBA相當於在C#中列出<T>
- 24. Implementing IComparer <T>對於IComparer <DictionaryEntry>
- 25. 當T = double時從默認值(T)中獲得Double.NOTANUMBER,是否有可能?
- 26. 獲取T的泛型列表<T>對象
- 27. 值得轉換NSMutable <T>到NS <T>
- 28. 如何使用make_shared <T>()替換所有shared_ptr <T>(new_w <T>)?
- 29. 有沒有相當於Func <T>或更好,在JavaScript中的ActionBlock?
- 30. 關於IEqualityComparer的問題<T> /列表<T> .Distinct()
還有幾點: 如果知道類型存在於哪個程序集中,則可以使用Assembly.GetType,它應該能夠解析完全限定的類型名稱,而不將程序集信息附加到類型字符串。如果你所有的都是「Foo」,那麼AppDomain.CurrentDomain.GetAssemblies()。SelectMany(a => a.GetTypes())。Single(t => t.Name ==「Foo」)或類似的你唯一的選擇,但這是脆弱和風險。 – Ani 2010-08-13 05:10:42