public bool HasProperty(string id, MemberFlag flag = MemberFlag.None) { if (Properties.ContainsKey(id) == false) { return(false); } var property = Properties[id]; return(property.IsMatch(flag)); }
public bool HasField(string id, MemberFlag flag = MemberFlag.None) { if (Fields.ContainsKey(id) == false) { return(false); } var field = Fields[id]; return(field.IsMatch(flag)); }
public static HtmlBuilder memberFlags(this HtmlBuilder builder, MemberFlag flags) { if ((flags & MemberFlag.ABSTRACT) != MemberFlag.NONE) builder.text("abstract "); if ((flags & MemberFlag.OVERRIDEN) != MemberFlag.NONE) builder.text("override "); else if ((flags & MemberFlag.VIRTUAL) != MemberFlag.NONE) builder.text("virtual "); if ((flags & MemberFlag.CONST) != MemberFlag.NONE) builder.text("const "); if ((flags & MemberFlag.STATIC) != MemberFlag.NONE) builder.text("static "); return builder; }
public static bool IsMatch(this SSMemberInfo _this, MemberFlag flag) { if (flag.HasFlag(MemberFlag.Static) && _this.IsStatic == false) { return(false); } if (flag.HasFlag(MemberFlag.Member) && _this.IsStatic == true) { return(false); } if (flag.HasFlag(MemberFlag.Public) && _this.AccessModifier.HasFlag(AccessModifier.Public) == false) { return(false); } if (flag.HasFlag(MemberFlag.Protected) && _this.AccessModifier.HasFlag(AccessModifier.Protected) == false) { return(false); } if (flag.HasFlag(MemberFlag.Private) && _this.AccessModifier.HasFlag(AccessModifier.Private) == false) { return(false); } if (flag.HasFlag(MemberFlag.Internal) && _this.AccessModifier.HasFlag(AccessModifier.Internal) == false) { return(false); } return(true); }
/// <summary> /// 创建集合collectionelement或者是element /// </summary> /// <param name="obj"></param> /// <param name="father"></param> /// <param name="name"></param> /// <param name="flag"></param> /// <returns></returns> public Element getOneElement(object obj, Type type, Element father, string name, MemberFlag flag) { Element ele = new Element(); if (typeof(IEnumerable).IsAssignableFrom(type)) { ele = new CollectionElement(); } ele.Father = father; ele.Name = name; ele.flag = flag; ele.ValueType = type; ele.Value = obj; if (father != null) { father.ChildElements.Add(ele); } return(ele); }
private Element RecuriveParseType(object obj, Type type, Element father, string name, MemberFlag flag) { if (obj == null && father == null) { throw new NullReferenceException("element and element father are null"); } if (obj == null) { if (flag == MemberFlag.Field) { type = father.ValueType.GetField(name).FieldType; return(getOneElement(obj, type, father, name, flag)); } if (flag == MemberFlag.Property) { type = father.ValueType.GetProperty(name).PropertyType; return(getOneElement(obj, type, father, name, flag)); } } if (obj is bool || obj is byte || obj is char || obj is decimal || obj is double || obj is Enum || obj is float || obj is int || obj is long || obj is sbyte || obj is short || obj is uint || obj is ulong || obj is ushort || obj is string || obj is StringBuilder ) { return(getOneElement(obj, type, father, name, flag)); } //数组 注意字符串实现了IEnumerable接口 if (typeof(IEnumerable).IsAssignableFrom(type)) { var array = obj as IEnumerable; var ele = getOneElement(obj, type, father, name, flag); foreach (var item in array) { RecuriveParseType(item, item.GetType(), ele, "", MemberFlag.Content); } return(ele); } //自定义类或结构体 else { var ele = getOneElement(obj, type, father, name, flag); setFields(ele); return(ele); } }