修改深埋在复杂对象中的类 - c#

时间:2012-08-06 12:24:52

标签: c# derived-class

我有一个课我想修改。

的属性名称

然而,这个类在一个更大的类(也是所有自定义类)中深埋了大约6个类。

我的问题是我无法触及任何现有的课程。

我能想到的唯一解决方案是从根类派生,将其粘贴到新的名称空间中,然后在根类和我想要修改的类之间的每个阶段创建新类。

希望这对我试图解释的内容有意义。

以上方法是唯一的方法吗?

3 个答案:

答案 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;
        }
    }
}