基本上
我有
string s = "Foo"
我需要获得
Type t = IRepo<Foo>
但是来自字符串
答案 0 :(得分:7)
这样的事情,使用Type.MakeGenericType
:
Type arg = Type.GetType(s);
Type definition = typeof(IRepo<>);
Type concrete = definition.MakeGenericType(arg);
请注意,Type.GetType(string)
附带了一些注意事项:
mscorlib
以外的程序集中获取类型或调用程序集,则必须包含程序集名称答案 1 :(得分:4)
Type t = typeof (IRepo<>).MakeGenericType(Type.GetType(s));
答案 2 :(得分:1)
您可以执行以下操作:
var someTypeName = "Foo";
var someType = Type.GetType("Namespace.To." + someTypeName);
typeof(IRepo<>).MakeGenericType(someType);
首先需要获取Type
Foo
,然后将其传递给Type.MakeGenericType。