MemberInfo(及其实现)是否被视为单例?

时间:2017-04-12 05:09:29

标签: c# reflection

我使用表达式树逻辑和流畅的API生成从不相关的源到目标对象的映射字典,使用MemberInfo来标识要写入的成员。

我想确保如果重复映射(无论出于何种原因),我可能会在运行时失败或发出警告。假设MemberInfo(及其实现)是唯一的,以及派生成员的单例是否安全?也就是说,将它用作集合中的关键是否可行?

为了论证,我现在只针对可公开写入的属性。

1 个答案:

答案 0 :(得分:1)

是的,他们是单身人士(对于那些看过我之前的答案的人来说,有一个涉及MemberInfo[]MemberInfo的打嗝。)

你可以证明这一点:

void Main()
{
    MemberInfo a = typeof(a).GetMember("b")[0];
    MemberInfo b = typeof(a).GetMember("b")[0];

    Console.WriteLine(Object.ReferenceEquals(a, b));
}

// Define other methods and classes here
class a
{
    public int b;
}

打印true