CodeMemberMethod CreateMethod(string methodName, MethodAccessibility access, MethodScope scope, string returnType) { return(CreateMethod(methodName, access, scope, new CodeTypeReference(returnType))); }
CodeMemberMethod CreateMethod(string methodName, MethodAccessibility access, MethodScope scope, CodeTypeReference returnType) { var ret = new CodeMemberMethod { Name = methodName, }; if (returnType != null) { ret.ReturnType = returnType; } MemberAttributes attrs; switch (access) { case MethodAccessibility.Internal: attrs = MemberAttributes.FamilyAndAssembly; break; case MethodAccessibility.Private: attrs = MemberAttributes.Private; break; case MethodAccessibility.Protected: attrs = MemberAttributes.Family; break; case MethodAccessibility.Public: attrs = MemberAttributes.Public; break; default: throw new NotSupportedException($"Method accessibility {access} is not supported"); } if ((scope & MethodScope.Static) == MethodScope.Static) { attrs |= MemberAttributes.Static | MemberAttributes.Final; } else if ((scope & MethodScope.Abstract) == MethodScope.Abstract) { attrs |= MemberAttributes.Abstract; } else { if ((scope & MethodScope.Override) == MethodScope.Override) { attrs |= MemberAttributes.Override; } else if ((scope & MethodScope.Virtual) == MethodScope.Virtual) { } else { attrs |= MemberAttributes.Final; } } ret.Attributes = attrs; return(ret); }
CodeMemberMethod CreateMethod(string methodName, MethodAccessibility access, MethodScope scope) { return(CreateMethod(methodName, access, scope, (CodeTypeReference)null)); }