0

プロパティ名を変更したいクラスがあります。

ただし、このクラスは、はるかに大きなクラス(すべてのカスタムクラス)の約6クラスの深さに埋め込まれています。

私の問題は、既存のクラスのいずれにも触れることができないことです。

私が考えることができる唯一の解決策は、ルートクラスから派生し、それを新しい名前空間に貼り付けてから、ルートクラスと変更したいクラスの間の各段階で新しいクラスを作成することです。

うまくいけば、これはイムが説明しようとしていることを理解するでしょう。

上記の方法が唯一の方法ですか?

4

3 に答える 3

1

拡張したいクラスはクラスだとおっしゃってpartialいたので、それも拡張することをお勧めします。これで、すでに提案したように、新しいプロパティを簡単に追加し、同じ名前空間に同じ名前のクラスを追加することでクラスを拡張できます。

以下の例では、両方のクラスに名前が付けられAており、両方のクラスが同じになっています。namespaceこれらは、クラスを構築するための2つの鍵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

おそらく妥協案として、新しい名前で追加のプロパティを作成し、既存のコードで古いプロパティを使用することができます。次に、古い属性を廃止としてマークすることもできます。

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 に答える
0

新しい名前でプロパティを作成することもできますが、[Obsolete]属性を使用して古いプロパティを保持します。

于 2012-08-06T12:34:02.417 に答える