看完之后这篇 MSDN 文章,我现在想知道将集合定义为继承自的类有什么好处(如果有的话)ObservableCollection
。这之间是否有任何显着差异:
class MyCollection : ObservableCollection<MyObject> { }
class Class1
{
private MyCollection _newCollection = new MyCollection();
public Class1()
{
_newCollection.Add(new MyObject());
}
}
和这个:
class Class1
{
private ObservableCollection<MyObject> _newCollection = new ObservableCollection<MyObject>();
public Class1()
{
_newCollection.Add(new MyObject());
}
}
我在这里忽略了什么吗?
一个主要好处是您可以定义Add
函数,这使得内联初始化更容易。例如:
class MyCollection : ObservableCollection<MyObject>
{
public void Add(string prop1, string prop2)
{
base.Add(new MyObject { Prop1 = prop1, Prop2 = prop2 });
}
}
让你写这个:
MyCollection collection = new MyCollection
{
{ "prop1", "prop2" },
{ "prop1", "prop2" },
};
第二个(相关的)好处:如果您使用 XAML,则拥有子类集合可以让您将集合实例(用于设计/测试用例)定义为标记,如下所示:
<local:MyCollection xmlns:local="MyNamespace">
<local:MyObject Prop1="prop1" Prop2="prop2" />
<local:MyObject Prop1="prop1" Prop2="prop2" />
</local>
最后,(我认为这只是一个品味问题)它一般不会造成伤害,而且可以提供帮助。有时,您最终需要给定集合类型更多的方法/属性。准备好类型化子类是件好事,无需重构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)