0

C# の質問です。

次のような継承階層があります。

BaseController
    Object1Controller
    Object2Controller
    Object3Controller
        Object3_1Controller

オブジェクト 1 2 および 3 のインスタンスは、ベース コントローラの値を使用して値を計算しますが、オブジェクト 3_1 は計算しません。

これらのオブジェクトには、ベース値を一時的に変更し、キャッシュされた値に戻す他のオブジェクトを関連付けることができます。(この OO の悪夢の恐ろしい意味は無視してください :P )

私ができるようにしたいのは、次のようなものです。

class modifier<T>
T* pointerToValue
void assignModifiable(T*)

すべての変更可能なクラスが修飾子を作成し、変更したい変数を指すようにします。C++ に相当するものは次のようになります。

template <class T> class ModifierInterface
{
    T* modifiableVariable;
    void setModifier( T &target )
    { modifiableVariable = target }

    void changeModifiable( T val )
    { modifiableVariable = val }
}
4

1 に答える 1

2

ここでの答えは、値のラッパー クラスのようです。

class Modifiable<T>
{
    public T Value { get; st; }
    ...
}

class Object1Controller : ...
{
    public Modifiable<int> MyValue { get; private set; }
}

これは完全ではありませんが、あなたの質問について私ができることです。AModifiable<int>は、 のほとんどのプロパティを持ちますint*

于 2013-10-09T14:48:14.653 に答える