예제 #1
0
        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());
        }
예제 #2
0
        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);
        }