【发布时间】:2019-07-16 12:14:22
【问题描述】:
即我有 2 步继承类,并且只能访问 Parent_1 类:
public class Base
{
public virtual void hello (){}
}
//
public class Parent_1 : Base
{
public override void hello (){ Print("Hi 1"); }
}
public class Parent_2 : Parent_1
{
public override void hello (){ Print("Hi 2"); xyz =123; }
}
除了Parent_1,我无权访问任何代码。我想,当Parent_2 的hello 被执行时,我的Parent_1 的hello 也被解雇了。
我认为应该存在某种方式,所以当Parent_2 被执行时,不知何故我在Parent_1 中收到通知(事件处理程序或其他),这不可能吗?我知道xyz 在那里“改变”了,所以也许是“财产改变观察者”?
【问题讨论】:
-
将
base.Hello();放入Parent_2的hello方法中。 -
_"我无权访问 Parent_2",你的意思是什么?你不能改变它的代码?
-
根据您提供给我们的信息,答案是“不,您不能轻易做到这一点”。根据所涉及类型的具体细节,您可以编写自己的
ConvertFromParent_2ToParent_1函数,您可以使用该函数从Parent_2的实例创建一个新的Parent_1,然后在该新实例上调用该函数.很难知道这对您的特定环境是否有用。 -
不,你不能,当然,如果你的
hello方法改变了某些东西,你可以访问,你可以以某种方式检查是否进行了更改,从Parent_1调用hello,但是如果它是你所描述的,你不能不访问(添加一些代码)类Parent_2。 -
@SeM 谢谢,我只知道
Parent_2的 hello 在名为xyz的基本属性发生变化时被调用。
标签: c# inheritance overriding virtual