/// <summary> /// Replaces the generic method element with a more specific extension method /// element as needed. /// </summary> /// <param name="member">The member.</param> /// <param name="map">The map.</param> /// <returns></returns> private static Member ReplaceExtensionMethods(Member member, MemberIdMap map) { if (member.Kind != MemberKinds.Method) { return(member); } var method = (MethodBase)map.FindMember(member.Id); if (method == null) { return(member); } if (method.GetCustomAttributes(true).Any(attr => attr.GetType().FullName == "System.Runtime.CompilerServices.ExtensionAttribute")) { var extendedTypeId = map.FindId(method.GetParameters()[0].ParameterType); if (!string.IsNullOrEmpty(extendedTypeId)) { return(new ExtensionMethod(member.Id, extendedTypeId, member.Elements)); } } return(member); }
/// <summary> /// Replaces the generic <see cref="TypeDeclaration"/> with /// concrete types according to the reflection information. /// </summary> private static Member ReplaceTypes(Member member, MemberIdMap map) { if (member.Kind != MemberKinds.Type) { return(member); } var type = (Type)map.FindMember(member.Id); if (type == null) { return(member); } if (type.IsInterface) { return(new Interface(member.Id, member.Elements)); } if (type.IsClass) { return(new Class(member.Id, member.Elements)); } if (type.IsEnum) { return(new Enum(member.Id, member.Elements)); } if (type.IsValueType) { return(new Struct(member.Id, member.Elements)); } return(member); }
/// <summary> /// Sets the extended reflection info if found in the map. /// </summary> private static Member SetInfo(Member member, MemberIdMap map) { member.Info = map.FindMember(member.Id); return(member); }
/// <summary> /// Sets the extended reflection info if found in the map. /// </summary> private static Member SetInfo(Member member, MemberIdMap map) { member.Info = map.FindMember(member.Id); return member; }
/// <summary> /// Replaces the generic <see cref="TypeDeclaration"/> with /// concrete types according to the reflection information. /// </summary> private static Member ReplaceTypes(Member member, MemberIdMap map) { if (member.Kind != MemberKinds.Type) return member; var type = (Type)map.FindMember(member.Id); if (type == null) return member; if (type.IsInterface) return new Interface(member.Id, member.Elements); if (type.IsClass) return new Class(member.Id, member.Elements); if (type.IsEnum) return new Enum(member.Id, member.Elements); if (type.IsValueType) return new Struct(member.Id, member.Elements); return member; }
/// <summary> /// Replaces the generic method element with a more specific extension method /// element as needed. /// </summary> /// <param name="member">The member.</param> /// <param name="map">The map.</param> /// <returns></returns> private static Member ReplaceExtensionMethods(Member member, MemberIdMap map) { if (member.Kind != MemberKinds.Method) return member; var method = (MethodBase)map.FindMember(member.Id); if (method == null) return member; if (method.GetCustomAttributes(true).Any(attr => attr.GetType().FullName == "System.Runtime.CompilerServices.ExtensionAttribute")) { var extendedTypeId = map.FindId(method.GetParameters()[0].ParameterType); if (!string.IsNullOrEmpty(extendedTypeId)) return new ExtensionMethod(member.Id, extendedTypeId, member.Elements); } return member; }