从双重派生类调用root base方法? [英] Call root base method from doubly derived class?
问题描述
鉴于
公共等级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屋!