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