我有一个 child 和一个父类,因此:
class B : A{
public B : base(){
// stuff
}
}
class A{
public A(){
// how can I gain access here to the class that called me,
// ie the instance of class B that's being instantiated.
}
}
如上,我的问题是在父类的构造函数中能不能看到谁调用了父构造函数。
一种方法是在 A
中有一个单独的函数,您可以从 B 中将 this
传递给该函数。有没有更简单的方法,即我可以这样做吗在对象初始化期间,还是在对象构建过程中太早了?在我可以从 A
中访问它之前,整个对象 B
是否需要“准备好”?
谢谢!
最佳答案
在 A
中,这很简单 - 您只需使用 this
并将其转换为 B
如果您确信它确实 是 B
而不是任何其他派生类。该对象将已经是 B
的一个实例。
但是,从构造函数调用虚方法通常是一个坏的想法,因为 B 构造函数的主体尚未运行,所以它只是半初始化。我曾遇到过一些让我很痛苦的情况,但如果您告诉我们您想要实现的目标,我们可能会想出一些更清晰的东西。
关于C# 在父构造函数中访问调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7093991/