основные свойства - PullRequest
0 голосов
/ 23 мая 2011

Я наследую от класса, который имеет это свойство:

public bool isAuthorized
{
    get { return _Authorized; }
    set { _Authorized = value; }
}

Я пытаюсь переопределить это в производном классе, но он не распознает isAuthorized. Может ли кто-нибудь помочь мне с моим синтаксисом?

public override bool isAuthorized()
{

}

Это ошибка, которую я получаю:

cannot override because 'CDBase.isAuthorized' is not a function

РЕДАКТИРОВАТЬ: Итак, если я хочу, чтобы переопределение всегда устанавливало isAuthorized в true, я бы использовал этот синтаксис?

private bool _Authorized = false;

    public override bool isAuthorized 
    {
        get { return _Authorized; }
        set { _Authorized = true; }
    }

Ответы [ 10 ]

4 голосов
/ 23 мая 2011

это свойство, которое вы использовали как метод isAuthorized()

() - используется для методов

вы должны сделать в своем производном классе

public override bool isAuthorized
    {

    }
2 голосов
/ 23 мая 2011

Чтобы установить для вашего значения всегда true, вы можете просто написать этот код:

  public override bool isAuthorized
  {
      get { return true; }
  }
2 голосов
/ 23 мая 2011

Исходный класс должен иметь виртуальный, но я подозреваю, что у вас также может быть проблема с тем фактом, что вы пытаетесь переопределить свойство базового класса с помощью метода производного класса.

Если ваш метод производного класса выглядел так:

    public override bool isAuthorized
    {
        get { return _Authorized; }
        set { _Authorized = value; }
    }

Тогда вам понадобится это в вашем базовом классе:

    public virtual bool isAuthorized
    {
        get { return _Authorized; }
        set { _Authorized = value; }
    }

Можете ли вы пожелать большего, чего вы пытаетесь достичь?

2 голосов
/ 23 мая 2011

Так же, как если вы хотите, чтобы ваш метод был переопределенным, свойство также должно быть объявлено virtual в базовом классе:

public virtual bool isAuthorized ...

Также вы не можете переопределить свойство с помощьюметод.Вы можете переопределить только методы получения и установки в производном классе:

public override bool isAuthorized
{
   get { return base.isAuthorized; }
   set { base.isAuthorized = value; } 
}
0 голосов
/ 23 мая 2011

О вашей ошибке и синтаксисе: просто не используйте '()'.Вы используете свойство как метод.

О том, как это сделать:

Есть два способа реализовать его в базовом классе.«новый» и «переопределить».Но их реализации различаются в зависимости от базового класса.

http://msdn2.microsoft.com/en-us/library/435f1dw2.aspx

Новый модификатор инструктирует компилятор использовать вашу реализацию вместо реализации базового класса.Любой код, который не ссылается на ваш класс, но базовый класс, будет использовать реализацию базового класса.

public bool isAuthorized
 {
     get { return _Authorized; }
     set { _Authorized = value; }
 }


public new bool isAuthorized
 {  //someth    }

http://msdn2.microsoft.com/en-us/library/ebca9ah3.aspx

Модификатор переопределения может использоваться в виртуальных методах и должен использоваться в абстрактных методах.Это указывает на то, что компилятор использует последнюю определенную реализацию метода.Даже если метод вызывается по ссылке на базовый класс, он будет использовать реализацию, переопределяющую его.

public virtual bool isAuthorized
 {
     get { return _Authorized; }
     set { _Authorized = value; }
 }


public override bool isAuthorized
 {  //someth    } 
0 голосов
/ 23 мая 2011

В базовом классе вы можете пометить его как виртуальный, и вы можете переопределить.На самом деле, используйте рефлектор, мы видим, что свойства тоже методы!

0 голосов
/ 23 мая 2011

Привет, я думаю, вы должны объявить это как Виртуальный, чтобы иметь возможность переопределить

Как:

публичный виртуальный bool isAuthorized
{
get {return _Authorized;}
set {_Authorized = value;}
}

Regars,

0 голосов
/ 23 мая 2011

это

   class A
    {
        public virtual string prop { get; set; }
    }

    class B : A
    {
        public override string prop
        {
            get
            {
                return "overridden";
            }
            set
            {
                base.prop = value;
            }
        }
    }
0 голосов
/ 23 мая 2011

В базовом классе пометьте свойство как virtual, которое вы хотите переопределить, и в производном классе используйте ключевое слово override для свойства, которое необходимо переопределить.

0 голосов
/ 23 мая 2011
public virtual bool isAuthorized
{
    get { return _Authorized; }
    set { _Authorized = value; }
}



public override bool isAuthorized
{
 ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...