创建具有相同属性的多个对象

本文关键字:对象 属性 创建 | 更新日期: 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;
}