示例#1
0
        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;
 }
示例#3
0
		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");
		}