我目前正试图弄清楚如何让包装类公开它所包装的任何属性,而不必在包装类中逐个手动设置它们。我一直试图弄清楚这是不是一个好的设计选择,或者我是否完全被误导并且通过这样做进入了一个非常糟糕的地方。
我的包装类也已经继承了......
下面的示例代码(假对象请不要读取它们):
public class Car {
public String Name { get; set; }
public String Status { get; set; }
public String Type { get; set; }
public Car(takes params) {
// makes car!
}
}
public class CarWrapper : OtherAutomotiveRelatedThing {
public Car car;
public CarWrapper(Car c) {
car = c;
}
}
public class OtherAutomotiveRelatedThing {
public String Property1 { get; protected set; }
public String Property2 { get; protected set; }
}
我在包装器对象上使用继承,因为我无法修改基本的Car类,它需要其他汽车用品的属性。其他多个类也从OtherAutomotiveRelatedThing继承。
我将一个CarWrapper对象列表作为Json返回(因为我正在构建一个Web应用程序),包装器对象给我带来了问题。当转换/转换为Json时,列表中的CarWrapper对象都包含另一个嵌套对象 - Car对象和我使用的框架无法获取其所需的属性。
有没有办法在"顶级"中公开包装的Car对象的属性?没有执行以下操作的CarWrapper:
public class CarWrapper : OtherAutomotiveRelatedThing {
public Car car;
public String Name { get; private set; }
public String Status { get; private set; }
public String Type { get; private set; }
public CarWrapper(Car c) {
car = c;
this.Name = c.Name;
this.Status = c.Status;
this.Type = c.Type;
}
}
如果我不清楚,如果您有任何疑问,或需要/想要更多信息,请告诉我。
谢谢!
答案 0 :(得分:1)
对我而言,您似乎想要prototype
- 样式编程,就像在JavaScript中一样,这不是他们在OOP中使用的。
也许将它想象为“如果我有两个不同的汽车包装(设置了不同的属性)是一个好的开始,我应该如何传递任何方法?”或者“我可以拥有一个包装汽车和动物的包装纸”,以及“如何揭示汽车和动物具有相同名称但含义不同的公共财产,如skin color
”。等
答案可以帮助您确定是否需要说明接口,或公开对象公开的包装器,或纯粹的封装,或更改语言来表示JavaScript。