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()); }
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); } }
/// <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); }