string CreateCref(MemberInfo member) { member = GetPropertyForMember(member) ?? member; var cref = new StringBuilder(); switch (member.GetMemberType()) { case "Constructor": cref.Append("C"); break; case "Event": cref.Append("E"); break; case "Field": cref.Append("F"); break; case "Method": cref.Append("M"); break; case "Property": cref.Append("P"); break; case "Type": cref.Append("T"); break; default: throw new InvalidOperationException("Unable to create cref for member: " + member + "."); } cref.Append(":"); AppendMemberRef(cref, member); return(cref.ToString()); }
StringBuilder AppendMemberRef(StringBuilder cref, MemberInfo member) { switch (member.GetMemberType()) { case "Type": { Type type = (Type)member; cref.Append(type.Namespace).Append('.').Append(type.Name); return(cref); } default: AppendMemberRef(cref, (MemberInfo)member.DeclaringType); break; } if (member.GetMemberType() != "Constructor") { cref.Append(".").Append(member.Name); } Mono.Collections.Generic.Collection <ParameterInfo> p = null; if (member is MethodDefinition) { p = ((MethodDefinition)member).Parameters; } else if (member is PropertyDefinition) { p = ((PropertyInfo)member).GetMethod.Parameters; } if (p != null && p.Count > 0) { cref.Append("("); AppendMemberRef(cref, p [0].ParameterType); for (int i = 1; i < p.Count; ++i) { cref.Append(", "); AppendMemberRef(cref, p [1].ParameterType); } cref.Append(")"); } return(cref); }