我有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)
Amy*_*y B 30
多么棘手的问题.试试这个:
List<Contact> c = null;
List<Address> a = null;
List<Document> d = null;
object o = GetObject();
c = o as List<Contact>;
a = o as List<Address>;
d = o as List<Document>;
Run Code Online (Sandbox Code Playgroud)
在c,a和d之间,有2个空值和1个非空值,或3个空值.
拿2:
object o = GetObject();
IEnumerable e = o as IEnumerable;
IEnumerable<Contact> c = e.OfType<Contact>();
IEnumerable<Address> a = e.OfType<Address>();
IEnumerable<Document> d = e.OfType<Document>();
Run Code Online (Sandbox Code Playgroud)
And*_*ais 27
大量的试验和错误在SL 5上给了我这个,但它也适用于普通的C#.您还需要将LINQ添加到您的使用列表中,以便后半部分正常工作.
List<object> myAnythingList = (value as IEnumerable<object>).Cast<object>().ToList()
Run Code Online (Sandbox Code Playgroud)
请享用!
| 归档时间: |
|
| 查看次数: |
66608 次 |
| 最近记录: |