Я написал следующий код:C# доступа к защищенным членам в производном классе
public class A
{
protected string Howdy = "Howdy!";
}
public class B : A
{
public void CallHowdy()
{
A a = new A();
Console.WriteLine(a.Howdy);
}
}
Теперь в VS2010
это приводит к следующей ошибке компиляции:
Cannot access protected member 'A.a' via a qualifier of type 'A'; the qualifier must be of type 'B' (or derived from it).
Это кажется совершенно нелогичным для меня - почему я не могу получить доступ к полю protected
экземпляра класса из метода класса, который получен из него?
Итак, Почему это происходит?
Найден Строгий ответ - http://blogs.msdn.com/b/ericlippert/archive/2005/11/09/491031.aspx
+1 для очень четко написанного вопроса. :) – Almo
Что вы можете сделать, это создать защищенный статический метод, который обеспечивает доступ только к производному классу, например: public class A { { защищенная строка Howdy = "Howdy!"; } общественного класс B: { общественной недействительная CallHowdy() { А а = новый А(); Console.WriteLine (a.Хауди); } } –