Exemplo n.º 1
0
        void ILoadMember.StaticField(bool hasNonPublic)
        {
            if (Loaded(3))
            {
                return;
            }
            if (Fields == null)
            {
                Fields = new ObjectPropertyCollection(Properties.IgnoreCase);
            }
            var bf = BindingFlags.Public | BindingFlags.Static;

            if (hasNonPublic)
            {
                bf |= BindingFlags.NonPublic;
            }
            foreach (var f in _Type.GetFields(bf))
            {
                if (f.Name.Contains("<") == false &&
                    Fields.ContainsKey(f.Name) == false)
                {
                    Fields.Add(new ObjectProperty(f));
                }
            }
            Monitor.Exit(this);
        }
Exemplo n.º 2
0
 /// <summary> 初始化对象属性,字段访问组件,ignoreCase参数指示是否需要区分大小写
 /// </summary>
 /// <param name="type">需快速访问的类型</param>
 /// <param name="ignoreCase">是否忽略大小写(不区分大小写时应保证类中没有同名的(仅大小写不同的)属性或字段)</param>
 public ZTReflector(Type type, bool ignoreCase)
 {
     _Type          = type;
     _CallNewObject = PreNewObject;
     Properties     = new ObjectPropertyCollection(ignoreCase);
     foreach (var p in type.GetProperties())
     {
         if (p.GetIndexParameters().Length == 0)//排除索引器
         {
             if (!Properties.ContainsKey(p.Name))
             {
                 var a = new ObjectProperty(p);
                 Properties.Add(a);
             }
         }
     }
 }
Exemplo n.º 3
0
        void ILoadMember.NonPublicField()
        {
            if (Loaded(2))
            {
                return;
            }
            if (Fields == null)
            {
                Fields = new ObjectPropertyCollection(Properties.IgnoreCase);
            }
            var bf = BindingFlags.NonPublic | BindingFlags.Instance;

            foreach (var f in _Type.GetFields(bf))
            {
                if (f.Name.Contains("<") == false)
                {
                    Fields.Add(new ObjectProperty(f));
                }
            }
            Monitor.Exit(this);
        }