我有一个基类:
public abstract class TechObject {
protected TechObject(FwVersion version) {
FwVersion = version;
}
public FwVersion FwVersion { get; set; }
}
我还有另一个继承这个类的类。
public partial class PositioningAxis : TechObject {
public PositioningAxis(FwVersion version) : base(version) {
}
}
在此类我自动生成的属性如下:
public partial class PositioningAxis {
public int Drive_V3 { get; set; }
public int Drive_V4 { get; set; }
}
我想要实现的是,当您使用PositioningAxis
V4创建类FwVersion
的对象时,只有V4的属性可见。
我可以改变我想要的所有课程,但我找不到好的模式。
我不想要的是为每个版本创建类。此外,我不希望用户看到每个版本的TechObject的所有属性。
答案 0 :(得分:0)
我不知道我的想法是否正确,这可能不是一个好的设计。我可能会选择一个接口然后为每个版本实现一个类,但是,嘿,这就是我将如何做到这一点。那么,这样的事情怎么样:
public class FwVersion
{
public int Version;
}
public abstract class TechObject
{
public FwVersion FwVersion { get; set; }
}
public partial class PositioningAxis : TechObject
{
private int Drive_V3
{
get; set;
}
private int Drive_V4
{
get; set;
}
public int Drive
{
get
{
switch (this.FwVersion.Version)
{
case 3: return Drive_V3;
case 4: return Drive_V4;
default: return -1;
}
}
set
{
switch (this.FwVersion.Version)
{
case 3: Drive_V3 = value;
break;
case 4: Drive_V4 = value;
break;
}
}
}
}