Как использовать переменную, объявленную в базовом классе для производного класса - PullRequest
0 голосов
/ 08 июня 2011

У меня есть базовый класс, который использует переменную в одном из своих методов, а также производный класс, который нуждается в такой же переменной в своих методах. Ниже приведены детали

abstract class BaseClass
{
 protected Transition transition;
 public event EventHandler ActionComplete;
 private string abc;

 Public string ABC
 { 
    get{ return abc;}
    set { abc = value;} 
 }

 public void TransitionState(BaseClass obj)
 {
    ActionComplete(this, null);
 }
 public abstract void RequestSomeAction(Transition obj);

}

internal class DerivedClass : BaseClass
{
    //do i need to create transition variable again here
    internal new Transition transition;

    //this  parameter's value (here obj) should be assigned to the base class,

    public override void RequestSomeAction(Transition obj)
    {        
        //is below code correct. 
        stateTransition = obj;
        base.transition= transition;
    }

}

Ответы [ 2 ]

1 голос
/ 08 июня 2011

Почему новая переменная перехода и base.transition? Если вы сделали защищенную переменную в «базовом классе», вы можете просто использовать ее непосредственно в «дочернем классе», который расширяет этот класс!?

0 голосов
/ 08 июня 2011

Во-первых, если вам не нужно повторно объявлять переменную, не делайте этого. Вы можете просто использовать защищенное свойство.

this.transition

Если вам нужны 2 копии переменной с одинаковым именем (я не могу представить ни одного случая, когда вам это понадобится), тогда вы технически «прячетесь» против переопределения, поэтому вы можете сделать:

base.transition

или тот же

((BaseClass)this).transition

MSDN на базе .

...