我们有以下代码:
public class A
{
protected virtual void Method()
{
Console.Write("A");
}
}
public class B : A
{
protected override void Method()
{
Console.Write("B");
}
}
public class C : B
{
public void Some()
{
//How to call Method() from class A?
}
}如何在C类的Method()方法中从A类调用Some()?
我们假设A和B是库中的类,我们不能更改它们.
发布于 2018-03-14 06:12:24
如果really希望在这里调用Method of A (而不更改A或B的Method的实现),则必须进行以下更改。
Method of B类的访问说明符从override更改为new。
override将重写基类方法。让它成为new是做不到的。A和B类Method的访问说明符改为public而不是protected
protected成员的A将无法访问在您的C类。对于这些更改,请查看下面的代码。您将看到来自类Method的A正在被调用。
static void Main()
{
var c = new C();
c.Some();
Console.ReadKey();
}
public class A
{
public virtual void Method()
{
Console.Write("A");
}
}
public class B : A
{
public new void Method()
{
Console.Write("B");
}
}
public class C : B
{
public void Some()
{
//How to call Method() from class A?
((A)this).Method();
}
}如果不能进行上述更改,那么恐怕不能调用A__s Method :O。
https://stackoverflow.com/questions/49270626
复制相似问题