0

我有一个希望修改其属性名称的类。

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

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

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

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

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

4

3 回答 3

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;
        }
    }
}
于 2012-08-06T13:06:26.237 回答
0

您可以使用新名称创建属性,但使用 [Obsolete] 属性保留旧属性。

于 2012-08-06T12:34:02.417 回答
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;
        }
    }
}
于 2012-08-06T12:35:48.470 回答