예제 #1
0
        String GetName(Boolean isfull, Boolean includeDefType = true)
        {
            var method = _Method;

            var    sb   = new StringBuilder();
            String name = null;

            if (includeDefType)
            {
                var type = method.DeclaringType ?? method.ReflectedType;
                if (type != null)
                {
                    var tx = TypeX.Create(type);
                    name = isfull ? tx.FullName : tx.Name;
                }
                else
                {
                    name = "";
                }
            }
            sb.AppendFormat("{0}.", name);
            sb.Append(method.Name);
            sb.Append("(");
            var ps = method.GetParameters();

            for (int i = 0; i < ps.Length; i++)
            {
                if (i > 0)
                {
                    sb.Append(",");
                }

                if (ps[i].ParameterType != null)
                {
                    var tx = TypeX.Create(ps[i].ParameterType);
                    name = isfull ? tx.FullName : tx.Name;
                }
                else
                {
                    name = "";
                }
                sb.AppendFormat("{0} {1}", name, ps[i].Name);
            }
            sb.Append(")");
            return(sb.ToString());
        }
예제 #2
0
파일: TypeX.cs 프로젝트: lichange/NS
        String GetName(Boolean isfull)
        {
            Type type = Type;

            if (type.IsNested)
            {
                var tx = TypeX.Create(type.DeclaringType);
                return((isfull ? tx.FullName : tx.Name) + "." + type.Name);
            }
            else if (type.IsGenericType)
            {
                var sb      = new StringBuilder();
                var typeDef = type.GetGenericTypeDefinition();
                var name    = isfull ? typeDef.FullName : typeDef.Name;
                var p       = name.IndexOf("`");
                if (p >= 0)
                {
                    sb.Append(name.Substring(0, p));
                }
                else
                {
                    sb.Append(name);
                }
                sb.Append("<");
                var ts = type.GetGenericArguments();
                for (int i = 0; i < ts.Length; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    if (!ts[i].IsGenericParameter)
                    {
                        var tx = TypeX.Create(ts[i]);
                        sb.Append(isfull ? tx.FullName : tx.Name);
                    }
                }
                sb.Append(">");
                return(sb.ToString());
            }
            else
            {
                return(isfull ? type.FullName : type.Name);
            }
        }
예제 #3
0
파일: MemberInfoX.cs 프로젝트: lichange/NS
        /// <summary>创建快速访问成员</summary>
        /// <param name="member"></param>
        /// <returns></returns>
        public static MemberInfoX Create(MemberInfo member)
        {
            if (member == null)
            {
                return(null);
            }

            switch (member.MemberType)
            {
            case MemberTypes.All:
                break;

            case MemberTypes.Constructor:
                return(ConstructorInfoX.Create(member as ConstructorInfo));

            case MemberTypes.Custom:
                break;

            case MemberTypes.Event:
                return(EventInfoX.Create(member as EventInfo));

            case MemberTypes.Field:
                return(FieldInfoX.Create(member as FieldInfo));

            case MemberTypes.Method:
                return(MethodInfoX.Create(member as MethodInfo));

            case MemberTypes.Property:
                return(PropertyInfoX.Create(member as PropertyInfo));

            case MemberTypes.TypeInfo:
            case MemberTypes.NestedType:
                return(TypeX.Create(member as Type));

            default:
                break;
            }
            return(null);
        }