键入强制转换为EntityCollection <object> </object>

时间:2011-04-08 10:23:06

标签: c#

我有一个参数EntityCollection

的方法

说:

DisplayItems(EntityCollection<Object> items);

为什么不能打电话?

EntityCollection<Student> students;

DisplayItems((EntityCollection<Object>) students); //type casting here

我怎样才能做到这一点?

请帮忙

2 个答案:

答案 0 :(得分:1)

你的问题是因为Covariance and Contravariance而发生的,想象一下你想要它,你可以这样做:

public void DisplayItems(EntityCollection<Object> items)
{
        //Probably not called add but you get the idea...
        items.Add(new AnyObjectILike());
        items.Add(new System.Windows.Form());
}

EntityCollection<Student> students;  
DisplayItems((EntityCollection<Object>)  students); //type casting here 

清楚地向Student添加非EntityCollection<Student>类型的实例会导致一个大问题,这是不允许的原因之一,您可以使用{{1}更改接口的此行为}和In个关键字。

答案 1 :(得分:-2)

类似的答案可以在这里找到:

convert or cast a List<t> to EntityCollection<T>

您需要单独循环并转换每个元素,并将它们添加到新的EntityCollection。

另一种选择是使用Cast()方法,但我不确定它是否适用于EntityCollection。它适用于List:

List<Object> myItems = students.Cast<Object>().ToList();

我无法检查这是否适用于EntityCollection但值得一试?