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