我有一个课我想修改。
的属性名称然而,这个类在一个更大的类(也是所有自定义类)中深埋了大约6个类。
我的问题是我无法触及任何现有的课程。
我能想到的唯一解决方案是从根类派生,将其粘贴到新的名称空间中,然后在根类和我想要修改的类之间的每个阶段创建新类。
希望这对我试图解释的内容有意义。
以上方法是唯一的方法吗?
答案 0 :(得分:1)
因为您已经声明要扩展的类是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;
}
}
}
答案 1 :(得分:0)
您可以使用新名称创建属性,但使用[Obsolete]属性保留旧属性。
答案 2 :(得分:0)
也许作为折衷方案,您可以使用新名称创建其他属性,然后现有代码使用旧属性。然后,您可以另外将旧属性标记为过时。
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;
}
}
}