【发布时间】:2013-12-05 04:37:16
【问题描述】:
我需要在运行时获取对象实例的名称。我有办法,但我认为一定有更好的办法。
假设我有 4 个表格:FormA1、FormA2、FormA2 和 DormA4。它们都源自FormA。 FormA 永远不会被实例化——假设它是虚拟的。
我也有FormB。每个 FormA 子代都可以在运行时根据特定事件实例化 FormB。 FormB 的工作是获取一些信息并在运行时将其返回给调用它(实例化它)的表单。但是在不知道调用表单实例的名称的情况下,我无法访问任何调用表单的属性。
我目前的做法是我在 FormB 中有一个构造函数,它使用 FormA 作为类型对发送者的引用作为参数,例如:
public class FormB : Form
{
private FormA referenceForm;
public FormB(ref FormA callingForm)
{
referenceForm = callingForm;
}
}
这样我可以让本地方法访问调用表单的属性。当然,要获得特定属性,我需要代码反射,这样我才能获得正确的类型并访问子项的特定属性。 或者,我认为,我可以创建 FormHandler 类,每次实例化子表单时实例化它并在事件中传递值,但这可能会使它变得比必要的复杂。
所以问题是,如何获取对象的实例名称以便访问其属性?
【问题讨论】:
-
实例没有名字。