Example #1
0
        public bool HasProperty(string id, MemberFlag flag = MemberFlag.None)
        {
            if (Properties.ContainsKey(id) == false)
            {
                return(false);
            }

            var property = Properties[id];

            return(property.IsMatch(flag));
        }
Example #2
0
        public bool HasField(string id, MemberFlag flag = MemberFlag.None)
        {
            if (Fields.ContainsKey(id) == false)
            {
                return(false);
            }

            var field = Fields[id];

            return(field.IsMatch(flag));
        }
Example #3
0
 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;
 }
Example #4
0
        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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
 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);
     }
 }