public IMethodSignatureMember AddNew(TypedName nameAndReturn, TypedName[] parameters, TypeConstrainedName[] typeParameters) { IMethodSignatureMember methodMember = new MethodSignatureMember(nameAndReturn, this.TargetDeclaration, parameters, typeParameters); if (this.ContainsKey(methodMember.GetUniqueIdentifier())) { throw new InvalidOperationException("method signature exists"); } this._Add(methodMember.GetUniqueIdentifier(), methodMember); return(methodMember); }
private static IMemberParentExpression GetRootReference(MethodSignatureMember <TParameter, TTypeParameter, TSignatureDom, TParent> referencePoint) { if (referencePoint is MethodMember) { var mReference = referencePoint as MethodMember; if (mReference.IsStatic) { return(mReference.ParentTarget.GetTypeReference().GetTypeExpression()); } else { return(mReference.ParentTarget.GetThisExpression()); } } else { throw new NotSupportedException(); } }
public ReferenceExpression(MethodSignatureMember <TParameter, TTypeParameter, TSignatureDom, TParent> referencePoint, IMemberParentExpression parentExpression) : base(referencePoint.Name, parentExpression) { this.referencePoint = referencePoint; }
public ReferenceExpression(MethodSignatureMember <TParameter, TTypeParameter, TSignatureDom, TParent> referencePoint) : base(referencePoint.Name, GetRootReference(referencePoint)) { this.referencePoint = referencePoint; }