2013-10-09 4 views
0

C# вопрос.C# указатели на переменные

У меня есть иерархия наследования, которая выглядит следующим образом:

BaseController 
    Object1Controller 
    Object2Controller 
    Object3Controller 
     Object3_1Controller 

экземпляры объектов 1, 2 и 3 вычислить значение, используя значение в базовом контроллере, но объект 3_1 не делает.

Эти объекты могут иметь прикрепленные к ним другие объекты, которые изменяют базовые значения за какое-то время, а затем возвращают их в кешированное значение. (Не обращая внимания на ужасающие последствия этого ОО кошмара: 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 } 
} 
+0

вы можете просто использовать 'ref'. –

+1

Не с указателями в любом случае. Вам придется приколоть почти все, и вы задушите сборщика мусора. –

+0

указатели редко нужны для C#. –

ответ

2

Ответ здесь, кажется, класс-оболочка для ваших значений:

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

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

Это не полный, но это то, что я могу сделать из вашего вопроса , A Modifiable<int> будет иметь большинство свойств int*.

+0

Нужно ли использовать ключевое слово ref, как указал @Daniel? –

+0

Нет, это допустимо только по параметрам, и вы можете сделать это без (многих) методов. –

+0

тоже, извините, но мой вопрос в замешательстве. Я пытаюсь представить более полный способ формулировки. Спасибо за помощь. –

Смежные вопросы