【发布时间】:2014-05-01 14:25:19
【问题描述】:
我在基类中有一个受保护的方法:
public class BaseClass
{
protected virtual void Foo(){}
}
该方法被派生类之一覆盖:
public class Derived1 : BaseClass
{
protected override void Foo()
{
//some code...
}
}
另一个派生类具有第一个派生类的实例。
当我尝试访问 Foo 方法(如前所述,存在于基类中)时,出现错误:
public class DerivedClass2 : BaseClass
{
BaseClass instance = new DerivedClass1();
instance.Foo(); // Here I get an error
}
我得到的错误:
Error CS1540: Cannot access protected member 'BaseClass.Foo' via a qualifier of type 'BaseClass';
the qualifier must be of type 'DerivedClass2' (or derived from it)
我了解受保护的成员不应将其价值放弃给任何其他实例,即使是从同一类型派生的实例,
但是有没有办法不将方法修改为public?
【问题讨论】:
-
如果可以接受只在该程序集中公开,您可以将其标记为内部
标签: c# overriding protected