3

私はtypeof(List<T>)Type オブジェクトとして持っていますが、List の型オブジェクトを取得するためにtypeof(List<>)使用できる が必要です。それは可能ですか?MakeGenericType()

更新:みんな、thx。これは些細な質問のようです。とにかく、私は全員に賛成票を投じ、最初の回答を受け入れました。

4

4 に答える 4

4

私があなたの問題を正しく理解していれば、あなたはジェネリックタイプ(List<int>)と別のタイプ(例えばlong)を持っていて、あなたはを作りたいと思っていList<long>ます。これは次のように実行できます。

Type startType = listInt.GetType();   // List<int>
Type genericType = startType.GetGenericTypeDefinition()  //List<T>
Type targetType = genericType.MakeGenericType(secondType) // List<long>

ただし、使用しているタイプが実際にリストである場合は、実際に使用した方が明確になる可能性があります。

Type targetType = typeof(List<>).MakeGenericType(secondType) // List<long>
于 2012-12-26T10:14:06.560 に答える
3

使用できますType.GetGenericTypeDefinition

于 2012-12-26T10:09:03.313 に答える
1

以下のようなものを達成するつもりだと思いますか?

var list = new List<int>();
Type intListType = list.GetType();
Type genericListType = intListType.GetGenericTypeDefinition();
Type objectListType = genericListType.MakeGenericType(typeof(object));
于 2012-12-26T10:11:53.213 に答える
0

答えは Type.GetGenericTypeDefinition です:
http://msdn.microsoft.com/en-us/library/system.type.getgenerictypedefinition.aspx

例:

var t = typeof(List<string>);
var t2 = t.GetGenericTypeDefinition();

そして、これを行うことができます:

var t = typeof(List<>);
var t2 = t.MakeGenericType(typeof(string));
于 2012-12-26T10:10:02.383 に答える