【发布时间】:2016-02-07 18:17:01
【问题描述】:
某处 在我的应用程序中,我有一个通用列表,它是使用反射从另一个程序集创建的。我只能访问该列表的对象。我的意思是我有一个Object objectOfList,我知道它是一个通用的值列表(例如 int 或 float 值)。我需要将项目添加到此列表中。我该怎么做?
由于我不知道通用列表的类型是什么,因此我尝试将 objectOfList 强制转换为对象列表,但它会引发异常:
(objectOfList as List<object>).Add(value); // value is an integer here
它抛出空引用异常。
更新
它可以是int float 或任何其他类型。写代码的时候不知道是什么类型。这是从UI 中选择列表类型并创建列表的用户。
【问题讨论】:
-
它会永远是
List<object>还是永远是List<int>或List<float>?在这种情况下,您需要根据value的类型进行转换,即((List<int>)objectOfList).Add(value); -
@Lee 它可以是 int float 或任何其他类型。写代码的时候不知道是什么类型。这是从
UI中选择列表类型的用户,然后创建列表。 -
是的,但它是否总是与
value完全相同的类型而不是子类型?在这种情况下,您可以根据value的类型进行转换。如果列表元素类型是value的超类型,那么您可以转换为IList。
标签: c# generics generic-list