Поле принадлежит классу, но как использовать полиморфизм - PullRequest
1 голос
/ 04 августа 2009

У меня есть метод в базовом классе

class Base
{
   private static string Colour = "blue";
   string DoStuff() { return ColourProp; }

   protected virtual string ColourProp { get{ return Base.Colour; } }
}

, который вызывается для экземпляра этого подкласса

class Sub
{
   private static string Colour = "orange";

   protected override string ColourProp { get{ return Sub.Colour; } }
}

В настоящее время я использую виртуальные свойства, это единственный способ? (учитывая, что поля не могут быть виртуальными) ...

Ответы [ 2 ]

2 голосов
/ 04 августа 2009

Да, для этого вам нужно использовать либо виртуальное свойство, либо виртуальный метод. CLR будет динамически отправлять все вызовы ColourProp правильно в зависимости от типа объекта (т.е. полиморфизм).

0 голосов
/ 04 августа 2009

Это выглядит совершенно нормально. Не беспокойтесь о виртуальных свойствах. Это обеспечивает не только инкапсуляцию ваших данных с другими объектами, но и с подклассами.

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