我有3个generict类型列表.
List<Contact> = new List<Contact>();
List<Address> = new List<Address>();
List<Document> = new List<Document>();
Run Code Online (Sandbox Code Playgroud)
并将其保存在具有类型对象的变量上.现在我做了Cast back to List来执行foreach,有些像这样:
List<Contact> = (List<Contact>)obj;
Run Code Online (Sandbox Code Playgroud)
但obj内容每次都在变化,我有一些这样的:
List<???> = (List<???>)obj;
Run Code Online (Sandbox Code Playgroud)
我有另一个变量保持当前obj类型:
Type t = typeof(obj);
Run Code Online (Sandbox Code Playgroud)
我可以做那样的事吗??:
List<t> = (List<t>)obj;
Run Code Online (Sandbox Code Playgroud)
Obs:我没有列表中的当前类型,但我需要施放,而我现在不再使用另一种形式:
List<Contact> = new List<Contact>();
Run Code Online (Sandbox Code Playgroud) 示例代码:
using System.Collections.Generic;
...
// could return anything.
private object GetObject(int code)
{
object obj = null;
if (code == 10)
{
var list1 = new List<Tuple<int, string>>();
list1.Add(new Tuple<int, string>(2, "blah"));
obj = list1;
}
else if (code == 20)
{
obj = "hello";
}
else if (code == 30)
{
var list2 = new List<string>();
list2.Add("o");
obj = list2;
}
// else etc, etc.
return obj;
}
private bool DoAction(int code)
{
object obj = GetObject(code);
bool isListT …
Run Code Online (Sandbox Code Playgroud)