public override bool Equals(object obj) { SpecializedEvent other = obj as SpecializedEvent; if (other == null) { return(false); } return(object.Equals(this.memberDefinition, other.memberDefinition) && object.Equals(this.declaringType, other.declaringType)); }
public IEnumerable<IEvent> GetEvents(ITypeResolveContext context, Predicate<IEvent> filter = null) { Substitution substitution = new Substitution(typeArguments); List<IEvent> events = genericType.GetEvents(context, filter).ToList(); for (int i = 0; i < events.Count; i++) { SpecializedEvent e = new SpecializedEvent(events[i]); e.SetDeclaringType(this); e.ReturnType = e.ReturnType.Resolve(context).AcceptVisitor(substitution); events[i] = e; } return events; }
IMember Specialize(IMember member, Func<ITypeReference, ITypeReference> substitution) { IMethod method = member as IMethod; if (method != null) { SpecializedMethod m = new SpecializedMethod(method); m.SetDeclaringType(this); m.SubstituteTypes(substitution); return m; } IProperty property = member as IProperty; if (property != null) { SpecializedProperty p = new SpecializedProperty(property); p.SetDeclaringType(this); p.SubstituteTypes(substitution); return p; } IField field = member as IField; if (field != null) { SpecializedField f = new SpecializedField(field); f.SetDeclaringType(this); f.ReturnType = substitution(f.ReturnType); return f; } IEvent ev = member as IEvent; if (ev != null) { SpecializedEvent e = new SpecializedEvent(ev); e.SetDeclaringType(this); e.ReturnType = substitution(e.ReturnType); return e; } throw new ArgumentException("Unknown member"); }