我的反思有问题。我需要找到实例化静态成员的类型。我的代码如下所示:
private class SimpleTemplate : PageTemplate
{
internal static readonly IPageProperty NameProperty =
PropertyRepository.Register("Name");
}
PropertyRepository 是属性的存储库(显然)。它跟踪使用我正在构建的类型系统注册的所有属性。
为了成功地做到这一点,我需要跟踪所有属性以及定义它们的类型。否则,如果定义了两个具有相同名称的属性,属性存储库将无法区分它们。
所以,我想做的是找出定义 NameProperty 的类型并存储类型和名称。我怎样才能做到这一点?
我想使用强类型,即我不想将类型作为参数发送给PropertyRepository.Register。这很容易出错,因为我无法验证类型参数是否正确。
我想,解决方案将涉及反思。有没有办法使用反射来确定哪种类型调用静态方法?静态属性是使用静态构造函数(编译器生成的)隐式实例化的。有没有办法让我处理那个构造函数?这似乎可行,我只是不知道该怎么做。
换句话说:如果方法 A 调用方法 B,有什么方法 B 可以判断它是使用反射从 A 调用的吗?我想有,但我不知道如何。
有人知道吗?
编辑:我查看了 StackFrame 类,虽然它似乎做了我想要的,但它在生产代码中可能不可靠(我需要它)。