Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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#_Wpf_Observablecollection_Base_Derived Class - Fatal编程技术网

C# 如何调用派生类的方法? 简言之

C# 如何调用派生类的方法? 简言之,c#,wpf,observablecollection,base,derived-class,C#,Wpf,Observablecollection,Base,Derived Class,我希望能够调用一个方法,该方法采用类型为observetecollection的参数,但我希望使用observetecollection调用它。它说它不能在两者之间转换 比较长的 我想调用一个WPF窗口,其中有一个列表框,它将绑定到一个observetecollection。我希望窗口显示两个不同类共有的一些基本信息。这些类是Derived1和Derived2,并且基于基类。如果类型为BaseClass,我可以调用该方法,但我想传递一个列表 所以我有两个收藏: ObservableCollect

我希望能够调用一个方法,该方法采用类型为
observetecollection
的参数,但我希望使用
observetecollection
调用它。它说它不能在两者之间转换

比较长的 我想调用一个WPF窗口,其中有一个列表框,它将绑定到一个
observetecollection
。我希望窗口显示两个不同类共有的一些基本信息。这些类是
Derived1
Derived2
,并且基于
基类。如果类型为
BaseClass
,我可以调用该方法,但我想传递一个列表

所以我有两个收藏:

ObservableCollection<Derived1> A;
ObservableCollection<Derived2> B;

如果纯粹为了绑定目的而公开它,那么传递一个
IEnumerable
引用就足够了。数据绑定系统将自动检查实际实例,以查看它是否实现了
INotifyCollectionChanged
,因此它不需要显式键入绑定属性,因为
observateCollection
类型不同,对于
ref
类型必须完全匹配

在某些情况下,您可以以类似的方式使用派生类—请继续阅读。也就是说,你能做到

IEnumerable<Object> objects = new List<String>();

+1-精心挑选细节的好问题。对于未来-不要添加“感谢便条”(改为upvote/accept)和签名(改为编辑您的用户名)。谢谢,但是可以修改收藏吗?换句话说,添加和删除项。@Brownish,如果您需要修改集合(因此它不仅仅用于绑定),一个选项是提供一个接口或回调来执行必要的修改。不过,这里需要技巧的是,现在消费类需要知道只添加派生实例,因此您可能需要考虑如何公开这些实例。谢谢您的帮助。我修改了代码,如上面的编辑所示。我觉得这可能不是最好的解决方案,但可能是最简单的。我还认为我将研究回调和接口,以便能够理解它们,然后可能在将来实现它们。
cannot convert from 'ref System.Collections.ObjectModel.ObservableCollection<Derived1>' to 'ref System.Collections.ObjectModel.ObservableCollection<Base>'
public ObservableCollection<BaseClass> List;

public InitialiseWindow(IEnumerable<BaseClass> List)
{
    InitializeComponent();
    this.List=new ObservableCollection<BaseClass>(List);
}
IEnumerable<Object> objects = new List<String>();
 public interface IEnumerable<out T> : IEnumerable