コード例 #1
0
        /// <summary>
        /// 得到类型具体的Field信息
        /// </summary>
        /// <param name="type"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public static ExtendedFieldInfo GetTypeField(Type type, string fieldName)
        {
            (type != null).FalseThrow <ArgumentNullException>("type");
            fieldName.CheckStringIsNullOrEmpty("fieldName");

            TypeFields tf = GetTypeFields(type);

            ExtendedFieldInfo fi;

            TypeFieldInfo tfi = new TypeFieldInfo()
            {
                ObjectType = type, FieldName = fieldName
            };

            tf.Fields.TryGetValue(tfi, out fi).FalseThrow("不能在类型{0}中找到字段{1}", type.FullName, fieldName);

            return(fi);
        }
コード例 #2
0
        private static void FillFieldsInfo(System.Type type, Dictionary <TypeFieldInfo, ExtendedFieldInfo> result)
        {
            FieldInfo[] fields = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);

            foreach (FieldInfo fi in fields)
            {
                TypeFieldInfo tfi = new TypeFieldInfo();

                tfi.FieldName  = fi.Name;
                tfi.ObjectType = type;

                result.Add(tfi, new ExtendedFieldInfo(fi));
            }

            if (type.BaseType != typeof(object))
            {
                FillFieldsInfo(type.BaseType, result);
            }
        }