public static ICollection <ImplementedMember> GetExplicitlyImplementedEvents(this EventDefinition self) { V_0 = new List <ImplementedMember>(); if (!self.IsExplicitImplementation()) { return(V_0); } if (self.get_AddMethod() != null) { V_1 = self.get_AddMethod().GetExplicitlyImplementedMethods().GetEnumerator(); try { while (V_1.MoveNext()) { V_2 = V_1.get_Current(); V_3 = EventDefinitionExtensions.GetMethodDeclaringEvent(V_2.get_Member() as MethodReference); if (V_3 == null) { continue; } V_0.Add(new ImplementedMember(V_2.get_DeclaringType(), V_3)); } } finally { if (V_1 != null) { V_1.Dispose(); } } return(V_0); } if (self.get_RemoveMethod() == null) { return(V_0); } V_1 = self.get_RemoveMethod().GetExplicitlyImplementedMethods().GetEnumerator(); try { while (V_1.MoveNext()) { V_4 = V_1.get_Current(); V_5 = EventDefinitionExtensions.GetMethodDeclaringEvent(V_4.get_Member() as MethodReference); if (V_5 == null) { continue; } V_0.Add(new ImplementedMember(V_4.get_DeclaringType(), V_5)); } } finally { if (V_1 != null) { V_1.Dispose(); } } return(V_0); }
public static ICollection <ImplementedMember> GetExplicitlyImplementedEvents(this EventDefinition self) { List <ImplementedMember> result = new List <ImplementedMember>(); if (!self.IsExplicitImplementation()) { return(result); } if (self.AddMethod != null) { ICollection <ImplementedMember> explicitlyImplementedAddMethods = self.AddMethod.GetExplicitlyImplementedMethods(); foreach (ImplementedMember explicitlyImplementedAddMethod in explicitlyImplementedAddMethods) { EventDefinition explicitlyImplementedEvent = GetMethodDeclaringEvent(explicitlyImplementedAddMethod.Member as MethodReference); if (explicitlyImplementedEvent != null) { result.Add(new ImplementedMember(explicitlyImplementedAddMethod.DeclaringType, explicitlyImplementedEvent)); } } return(result); } if (self.RemoveMethod != null) { ICollection <ImplementedMember> explicitlyImplementedRemoveMethods = self.RemoveMethod.GetExplicitlyImplementedMethods(); foreach (ImplementedMember explicitlyImplementedRemoveMethod in explicitlyImplementedRemoveMethods) { EventDefinition explicitlyImplementedEvent = GetMethodDeclaringEvent(explicitlyImplementedRemoveMethod.Member as MethodReference); if (explicitlyImplementedEvent != null) { result.Add(new ImplementedMember(explicitlyImplementedRemoveMethod.DeclaringType, explicitlyImplementedEvent)); } } return(result); } return(result); }
public static bool IsExplicitImplementationOf(this EventDefinition self, TypeDefinition @interface) { if (@interface == null) { throw new ArgumentNullException("@interface can not be null."); } if ([email protected]) { throw new ArgumentOutOfRangeException("The @interface argument is not an interface definition."); } if (!self.IsExplicitImplementation()) { return(false); } if (self.DeclaringType.FullName == @interface.FullName) { return(true); } if (self.AddMethod != null) { if (!self.AddMethod.IsExplicitImplementationOf(@interface)) { return(false); } } if (self.RemoveMethod != null) { if (!self.RemoveMethod.IsExplicitImplementationOf(@interface)) { return(false); } } return(true); }
public static string GetFullMemberName(this IMemberDefinition self, ILanguage language) { if (self is TypeDefinition || self is FieldDefinition) { return(GenericHelper.ReplaceInvalidCharactersName(language, self.Name)); } if (self is EventDefinition) { EventDefinition @event = self as EventDefinition; if (@event.IsExplicitImplementation()) { string[] nameParts = @event.Name.Split(new char[] { '.' }); var sb = new StringBuilder(nameParts.Length * 2); for (int i = 0; i < nameParts.Length; i++) { string namePart = nameParts[i]; sb.Append(GenericHelper.ReplaceInvalidCharactersName(language, namePart)); if (i < nameParts.Length - 1) { sb.Append("."); } } return(sb.ToString()); } return(GenericHelper.ReplaceInvalidCharactersName(language, self.Name)); } else if (self is MethodDefinition) { return((self as MethodDefinition).GetFriendlyFullMethodReferenceName(language, self.Name, false)); } else if (self is PropertyDefinition) { PropertyDefinition propertyDefinition = self as PropertyDefinition; if (propertyDefinition.IsExplicitImplementation()) { string[] nameParts = propertyDefinition.Name.Split(new char[] { '.' }); var sb = new StringBuilder(nameParts.Length * 2); for (int i = 0; i < nameParts.Length; i++) { string namePart = nameParts[i]; sb.Append(GenericHelper.ReplaceInvalidCharactersName(language, namePart)); if (i < nameParts.Length - 1) { sb.Append("."); } } sb.Append("()"); return(sb.ToString()); } else { return((self as PropertyDefinition).GetFriendlyFullPropertyDefinitionName(language, self.Name)); } } throw new Exception("Invalid member definition type."); }