/// <summary> /// Returns the <see cref="InterLinqMemberInfo"/> for a C# <see cref="MemberInfo"/>. /// </summary> /// <param name="memberInfo"><see cref="MemberInfo"/>.</param> /// <returns>Returns the <see cref="InterLinqMemberInfo"/> for a C# <see cref="MemberInfo"/>.</returns> public InterLinqMemberInfo GetInterLinqMemberInfo(MemberInfo memberInfo) { lock (this) { if (memberInfo == null) { return null; } if (typeMap.ContainsKey(memberInfo)) { return typeMap[memberInfo]; } InterLinqMemberInfo createdMemberInfo; #if !NETFX_CORE switch (memberInfo.MemberType) #else switch (memberInfo.GetMemberType()) #endif { case MemberTypes.Constructor: createdMemberInfo = new InterLinqConstructorInfo(); break; case MemberTypes.Field: createdMemberInfo = new InterLinqFieldInfo(); break; case MemberTypes.Method: createdMemberInfo = new InterLinqMethodInfo(); break; case MemberTypes.Property: createdMemberInfo = new InterLinqPropertyInfo(); break; case MemberTypes.NestedType: case MemberTypes.TypeInfo: #if !NETFX_CORE createdMemberInfo = ((Type)memberInfo).IsAnonymous() ? new AnonymousMetaType() : new InterLinqType(); #else createdMemberInfo = ((TypeInfo)memberInfo).AsType().IsAnonymous() ? new AnonymousMetaType() : new InterLinqType(); #endif break; default: throw new Exception(string.Format("MemberInfo \"{0}\" could not be handled.", memberInfo)); } typeMap.Add(memberInfo, createdMemberInfo); createdMemberInfo.Initialize(memberInfo); return createdMemberInfo; } }
/// <summary> /// Returns the <see cref="InterLinqMemberInfo"/> for a C# <see cref="MemberInfo"/>. /// </summary> /// <param name="memberInfo"><see cref="MemberInfo"/>.</param> /// <returns>Returns the <see cref="InterLinqMemberInfo"/> for a C# <see cref="MemberInfo"/>.</returns> public InterLinqMemberInfo GetInterLinqMemberInfo(MemberInfo memberInfo) { lock (this) { if (memberInfo == null) { return(null); } if (_typeMap.ContainsKey(memberInfo)) { return(_typeMap[memberInfo]); } InterLinqMemberInfo createdMemberInfo; switch (memberInfo.MemberType) { case MemberTypes.Constructor: createdMemberInfo = new InterLinqConstructorInfo(); break; case MemberTypes.Field: createdMemberInfo = new InterLinqFieldInfo(); break; case MemberTypes.Method: createdMemberInfo = new InterLinqMethodInfo(); break; case MemberTypes.Property: createdMemberInfo = new InterLinqPropertyInfo(); break; case MemberTypes.TypeInfo: createdMemberInfo = ((Type)memberInfo).IsAnonymous() ? new AnonymousMetaType() : new InterLinqType(); break; default: throw new Exception(string.Format("MemberInfo \"{0}\" could not be handled.", memberInfo)); } _typeMap.Add(memberInfo, createdMemberInfo); createdMemberInfo.Initialize(memberInfo); return(createdMemberInfo); } }