创建具有相同属性的多个对象
本文关键字:对象 属性 创建 | 更新日期: 2023-09-27 18:03:27
我的程序开始变得相当大。我发现它开始在多个领域做同样的事情。我正在想办法使它更有效率。
我有一个像这样的对象
public class TreeViewNode
{
public TreeViewNode()
{
Children = new ObservableCollection<TreeViewNode>();
}
public String Name { get; set; }
public string Description { get; set; }
public ObservableCollection<TreeViewNode> Children { get; set; }
}
我还有一个对象看起来像这样;
public class ComputerObject
{
public String Name { get; set; }
public Int32 UUID { get; set; }
public DateTime Created { get; set; }
public ObservableCollection<Object> Children { get; set; }
}
这两个项目需要有一些相同的属性…目前它们都有Children属性和Name属性。但是它们都需要添加一些其他的共同属性。
所以我试过这样做。
public class BaseObject
{
public String Name { get; set; }
public ObservableCollection<Object> Children { get; set; }
public string Description { get; set; }
public BaseObject()
{
Children = new ObservableCollection<object>();
}
}
public class ComputerObject: BaseObject
{
public Int32 UUID { get; set; }
public DateTime Created { get; set; }
}
public class TreeViewNode: BaseObject
{
public String IconPath { get; set; }
}
现在这只是我正在实现的一个精简版本,我有很多对象共享相同的属性。还有一些则没有,只是混搭而已。我也想不出最好的实现方法。
我的对象变得非常混乱,当我重命名一个属性时,我发现我必须在几个区域重命名它,这不是它应该的方式。
有人可以建议我如何实现多个对象共享相同的属性名称?
在我看来,当这些子类彼此不相关时,你不应该让类从一个基类继承(就像@Sriram Sakthivel问Animal <狗,猫)只是为了共享相同的属性。>
你应该确定哪些类是相关的(猫,狗是动物;汽车,摩托车是车辆),然后基于这些"分组"创建基类。
我会看一下装饰模式。简而言之,您不会通过继承共享公共属性。您可以创建包含通用属性的类,并将这些类用作结束类的属性。
编辑:示例实际上只是一个标准的组合,它应该工作尽管
如
public class Decorator1
{
public String Name { get; set; }
public ObservableCollection<Object> Children { get; set; }
public string Description { get; set; }
}
public class Decorator2
{
public long Id { get; set; }
}
public class ClassA
{
public Decorator1 TreeNodeImpl;
}
public class ClassB
{
public Decorator1 TreeNodeImpl;
public Decorator2 LongIdImpl;
}