我有一个希望修改其属性名称的类。
然而,这个类被埋在一个更大的类中大约 6 个类(也是所有自定义类)。
我的问题是我无法触及任何现有的课程。
我能想到的唯一解决方案是从根类派生,将它放在一个新的命名空间中,然后在根类和我想要修改的类之间的每个阶段创建新类。
希望这对我试图解释的内容有意义。
上述方法是唯一的方法吗?
我有一个希望修改其属性名称的类。
然而,这个类被埋在一个更大的类中大约 6 个类(也是所有自定义类)。
我的问题是我无法触及任何现有的课程。
我能想到的唯一解决方案是从根类派生,将它放在一个新的命名空间中,然后在根类和我想要修改的类之间的每个阶段创建新类。
希望这对我试图解释的内容有意义。
上述方法是唯一的方法吗?
因为您已经声明要扩展的类是一个partial
类,所以我将建议您也将其扩展。现在您可以轻松地添加新属性,正如您已经建议的那样,并通过在同一个命名空间中添加一个具有相同名称的类来扩展该类。
在下面的示例中,两个类都被命名A
并且两个类都在同一个类中namespace
——这是构建partial
类的两个关键。
public partial class A
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
public partial class A
{
public string PropertyC
{
get
{
var val = this.PropertyA;
// some more functionality maybe...
return val;
}
set
{
// some more functionality maybe...
this.PropertyA = value;
}
}
}
您可以使用新名称创建属性,但使用 [Obsolete] 属性保留旧属性。
也许作为妥协,您可以使用新名称创建其他属性,然后现有代码使用旧属性。然后,您可以另外将旧属性标记为已过时。
class Example
{
int oldField;
[Obsolete("This is obsolete")]
public int OldField
{
get
{
return this.oldField;
}
set
{
this.oldField = value;
}
}
public int NewField
{
get
{
return this.oldField;
}
set
{
this.oldField = value;
}
}
}