Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 铸造粘合剂列表<;类名>;到绑定列表<;界面>;_C#_Casting_Bindinglist - Fatal编程技术网

C# 铸造粘合剂列表<;类名>;到绑定列表<;界面>;

C# 铸造粘合剂列表<;类名>;到绑定列表<;界面>;,c#,casting,bindinglist,C#,Casting,Bindinglist,我有一个实现接口I的对象(类A) 我的对象C有一个BindingList列表a 在某一点上,我需要执行以下转换: BindingList<I> funcName(){ ... return (BindingList<I>) C.listA; } BindingList funcName(){ ... return(bindingslist)C.listA; } 但是由于一个强制转换错误,它无法编译 我该怎么做呢?这是个问题。在.NET4.0中已经解决了这个

我有一个实现接口I的对象(类A)

我的对象C有一个BindingList列表a

在某一点上,我需要执行以下转换:

BindingList<I> funcName(){
   ...
   return (BindingList<I>) C.listA;
}
BindingList funcName(){
...
return(bindingslist)C.listA;
}
但是由于一个强制转换错误,它无法编译

我该怎么做呢?

这是个问题。在.NET4.0中已经解决了这个问题,但并不是针对所有可枚举类型,我认为BindingList没有解决这个问题

我认为您唯一的选择是创建BindingList的新实例,如下所示:

BindingList<I> funcName(){
   ...
   return new BindingList<I>(C.listA);
}
BindingList funcName(){
...
返回新的BindingList(C.listA);
}

或者,您可以将C.listA字段声明为BindingList,只需向其中添加类的实例。

这是一个BindingList。我将在问题+1中更正它。NET4在接口和委托上引入协方差和逆变,但在类上不引入协方差和逆变。注意:BindingList只接受IList类型的构造函数,所以我认为您的意思是:返回新的BindingList(C.listA.OfType().ToList());(或类似)嗯,谢谢你的链接,非常有趣。然而,BindingList在其构造函数中除了IList之外不会接受任何其他内容。我可以通过改变部分架构来解决这个问题。希望这将在未来的.net版本中得到解决。我将把你的回答记为已被接受。谢谢你的帮助。