从双重派生类调用root base方法? [英] Call root base method from doubly derived class?

查看:74
本文介绍了从双重派生类调用root base方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

鉴于


公共等级A {

virtual void foo(){...}

}


公共等级B:A {

public override void foo(){...}

public Bthingy(){... base.foo()...}

}


公共类C:B {

public override void foo() {。 。 。 }

public Cthingy(){... base.foo()...}

}

Banyy''''base .foo()''称A级为'foo。

Cousy''''base.foo()''称B级'为foo。

有没有办法让Cthingy给A级打电话?

Given

public class A {
virtual void foo() { ... }
}

public class B : A {
public override void foo() { ... }
public Bthingy() { ... base.foo() ...}
}

public class C : B {
public override void foo() { . . . }
public Cthingy() { ... base.foo() ... }
}
Bthingy''s ''base.foo()'' calls class A''s foo.
Cthingy''s ''base.foo()'' calls class B''s foo.

Is there a way for Cthingy to call the class A foo?

推荐答案

DrBonzo,


不,没有。 B必须暴露一种方法,它会暴露A的

基本方法,而不做任何其他事情。


希望这会有所帮助。
< br $> b $ b -

- Nicholas Paldino [.NET / C#MVP]

- mv*@spam.guard.caspershouse.com


" DrBonzo" <博士***** @ discussions.microsoft.com>在留言中写道

news:73 ********************************** @ microsof t.com ...
DrBonzo,

No, there isn''t. B would have to expose a method which would expose the
base method of A, without doing anything else.

Hope this helps.

--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"DrBonzo" <Dr*****@discussions.microsoft.com> wrote in message
news:73**********************************@microsof t.com...
给定

公共类A {
虚拟空虚foo(){...}
}

公共课B:A {
public override void foo(){...}
public Bthingy(){... base.foo()...}
公共类C:B {
public override void foo(){。 。 。 }
public Cthingy(){... base.foo()...}
}

Bousy''''base.foo()''调用类一个''foo。
Cthingy''''base.foo()''称B级'为foo。

有没有办法让Cthingy给A级打电话foo?
Given

public class A {
virtual void foo() { ... }
}

public class B : A {
public override void foo() { ... }
public Bthingy() { ... base.foo() ...}
}

public class C : B {
public override void foo() { . . . }
public Cthingy() { ... base.foo() ... }
}
Bthingy''s ''base.foo()'' calls class A''s foo.
Cthingy''s ''base.foo()'' calls class B''s foo.

Is there a way for Cthingy to call the class A foo?



No。


" DrBonzo" <博士***** @ discussions.microsoft.com>在留言中写道

news:73 ********************************** @ microsof t.com ...
No.

"DrBonzo" <Dr*****@discussions.microsoft.com> wrote in message
news:73**********************************@microsof t.com...
给定

公共类A {
虚拟空虚foo(){...}
}

公共课B:A {
public override void foo(){...}
public Bthingy(){... base.foo()...}
公共类C:B {
public override void foo(){。 。 。 }
public Cthingy(){... base.foo()...}
}

Bousy''''base.foo()''调用类一个''foo。
Cthingy''''base.foo()''称B级'为foo。

有没有办法让Cthingy给A级打电话foo?
Given

public class A {
virtual void foo() { ... }
}

public class B : A {
public override void foo() { ... }
public Bthingy() { ... base.foo() ...}
}

public class C : B {
public override void foo() { . . . }
public Cthingy() { ... base.foo() ... }
}
Bthingy''s ''base.foo()'' calls class A''s foo.
Cthingy''s ''base.foo()'' calls class B''s foo.

Is there a way for Cthingy to call the class A foo?





DrBonzo写道:

DrBonzo wrote:
给予

公开A级{
虚拟空虚foo(){...}
}
公共类B:A {
public override void foo(){... }
public Bthingy(){... base.foo()...}
}
公共类C:B {
public override void foo( ){。 。 。 }
public Cthingy(){... base.foo()...}
}

Bousy''''base.foo()''调用类一个''foo。
Cthingy''''base.foo()''称B级'为foo。

有没有办法让Cthingy给A级打电话foo?
Given

public class A {
virtual void foo() { ... }
}

public class B : A {
public override void foo() { ... }
public Bthingy() { ... base.foo() ...}
}

public class C : B {
public override void foo() { . . . }
public Cthingy() { ... base.foo() ... }
}
Bthingy''s ''base.foo()'' calls class A''s foo.
Cthingy''s ''base.foo()'' calls class B''s foo.

Is there a way for Cthingy to call the class A foo?




直接?间接号码?当然。


public Cousy()

{

A a = new A();

//将你想要的C部分复制到A

a.foo();

//将部分复制回A中的C. $>
}


好​​的,是的,它的愚蠢。但你可以做到这一点:)


马特



Directly? No. Indirectly? Sure.

public Cthingy()
{
A a = new A();
// Copy the parts of the C you want into the A
a.foo();
// Copy the parts back into C from the A.
}

Okay, yes, its dumb. But you can do it :)

Matt


这篇关于从双重派生类调用root base方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆