如何在C#中将BaseClass私有函数访问到DerivedClass?
答案 0 :(得分:10)
或者:
private
提升为protected
在4中,如果是私有财产或方法,我会选择1,如果是私有领域,我会选择2。我会在现场附近添加一个受保护的属性。
答案 1 :(得分:5)
答案 2 :(得分:4)
这个答案仅限于完整性。几乎在所有情况下,请使用其他答案中的建议。
其他答案都是正确的,除了有一种情况,派生类可以访问基类中的私有成员:派生类是基类的嵌套类型。这实际上可以成为在C#中模仿Java枚举的有用功能。示例代码(不是Java枚举,只是“访问私有成员”位。)
public class Parent
{
private void PrivateMethod()
{
}
class Child : Parent
{
public void Foo()
{
PrivateMethod();
}
}
}
答案 3 :(得分:3)
反思:
FieldInfo f = typeof(Foo).GetField("someField", BindingFlags.Instance | BindingFlags.NonPublic);
fd.SetValue(obj, "New value");
答案 4 :(得分:2)
它不能。如果您希望方法可以被派生类访问,那么您需要改为protected
。