Beispiel #1
0
 /// <summary>
 /// 成员信息
 /// </summary>
 /// <param name="member">属性</param>
 /// <param name="filter">选择类型</param>
 private memberInfo(PropertyInfo member, memberFilter filter)
     : this((MemberInfo)member, filter)
 {
     MemberType = member.PropertyType;
     CanSet     = member.CanWrite;
     CanGet     = member.CanRead;
 }
Beispiel #2
0
 /// <summary>
 /// 成员信息
 /// </summary>
 /// <param name="type">成员类型</param>
 /// <param name="name">成员名称</param>
 /// <param name="index">成员编号</param>
 public memberInfo(memberType type, string name, int index)
 {
     MemberType  = type;
     MemberName  = name;
     MemberIndex = index;
     IsField     = CanSet = CanSet = true;
     Filter      = memberFilter.PublicInstance;
 }
Beispiel #3
0
 /// <summary>
 /// 成员方法
 /// </summary>
 /// <param name="method">成员方法信息</param>
 /// <param name="filter">选择类型</param>
 public methodInfo(MethodInfo method, memberFilter filter)
     : base(method, filter)
 {
     Method            = method;
     ReturnType        = Method.ReturnType;
     Parameters        = parameterInfo.Get(method);
     OutputParameters  = Parameters.getFindArray(value => value.Parameter.IsOut || value.Parameter.ParameterType.IsByRef);
     GenericParameters = method.GetGenericArguments().getArray(value => (memberType)value);
 }
Beispiel #4
0
 /// <summary>
 /// 字段信息
 /// </summary>
 /// <param name="field">字段信息</param>
 /// <param name="filter">选择类型</param>
 /// <param name="index">成员编号</param>
 public fieldInfo(FieldInfo field, memberFilter filter, int index)
     : base((MemberInfo)field, filter)
 {
     IsField     = CanGet = true;
     CanSet      = !field.IsInitOnly;
     MemberIndex = index;
     MemberType  = field.FieldType;
     Getter      = fieldGetValue.Creator.Create(field);
     Setter      = fieldSetValue.Creator.Create(field);
 }
Beispiel #5
0
 /// <summary>
 /// 成员信息
 /// </summary>
 /// <param name="member">成员信息</param>
 /// <param name="filter">选择类型</param>
 protected memberInfo(MemberInfo member, memberFilter filter)
 {
     Member     = member;
     MemberName = member.Name;
     Filter     = filter;
     IsIgnore   = member.customAttributes <ignore>(true).Any(value => value.IsIgnore);
     if (CanGet && CanSet)
     {
         sqlMember sqlMember = member.customAttribute <sqlMember>(true);
         if (sqlMember != null && sqlMember.SqlType != null)
         {
             MemberType = new memberType(MemberType, sqlMember.SqlType);
         }
     }
 }
Beispiel #6
0
        /// <summary>
        /// 成员信息
        /// </summary>
        /// <param name="member">字段</param>
        /// <param name="filter">选择类型</param>
        private memberInfo(FieldInfo member, memberFilter filter)
            : this((MemberInfo)member, filter)
        {
            IsField = CanGet = true;
            CanSet  = !member.IsInitOnly;
            sqlMember sqlMember = member.customAttribute <sqlMember>(true);

            if (sqlMember == null || sqlMember.SqlType == null)
            {
                MemberType = member.FieldType;
            }
            else
            {
                MemberType = new memberType(member.FieldType, sqlMember.SqlType);
            }
        }
Beispiel #7
0
        /// <summary>
        /// 属性信息
        /// </summary>
        /// <param name="property">属性信息</param>
        /// <param name="filter">选择类型</param>
        /// <param name="index">成员编号</param>
        /// <param name="nonPublic">是否非公有属性</param>
        /// <param name="isStruct">目标类型是否结构体</param>
        public propertyInfo(PropertyInfo property, memberFilter filter, int index, bool nonPublic, bool isStruct)
            : base((MemberInfo)property, filter)
        {
            CanSet      = property.CanWrite;
            CanGet      = property.CanRead;
            MemberType  = property.PropertyType;
            MemberIndex = index;
            if (isStruct)
            {
                getMethod = property.GetGetMethod(nonPublic);
                setMethod = property.GetSetMethod(nonPublic);
            }
            else
            {
                Getter = propertyGetter <valueType> .createPropertyTargetGetter.Default.Create(property, nonPublic);

                Setter = propertySetter <valueType> .createPropertyTargetSetter.Default.Create(property, nonPublic);

                Copyer = propertyCopyer <valueType> .Creator.Create(property, nonPublic);
            }
        }
Beispiel #8
0
 /// <summary>
 /// 根据类型获取成员信息集合
 /// </summary>
 /// <typeparam name="attributeType">自定义属性类型</typeparam>
 /// <param name="filter">选择类型</param>
 /// <param name="isAttribute">是否匹配自定义属性类型</param>
 /// <param name="isBaseType">是否搜索父类属性</param>
 /// <param name="isInheritAttribute">是否包含继承属性</param>
 /// <returns>成员信息集合</returns>
 public static memberInfo[] GetMembers <attributeType>(Type type, memberFilter filter, bool isAttribute, bool isBaseType, bool isInheritAttribute)
     where attributeType : fastCSharp.setup.ignore
 {
     return(getAttribute <attributeType>(GetMembers(type, filter), isAttribute, isBaseType, isInheritAttribute));
 }
Beispiel #9
0
 /// <summary>
 /// 根据类型获取成员信息集合
 /// </summary>
 /// <param name="filter">选择类型</param>
 /// <returns>成员信息集合</returns>
 public static memberInfo[] GetMembers(Type type, memberFilter filter)
 {
     return(getMembers(type).getFindArray(value => (value.Filter & filter) != 0));
 }
Beispiel #10
0
 /// <summary>
 /// 获取匹配成员方法集合
 /// </summary>
 /// <typeparam name="attributeType">自定义属性类型</typeparam>
 /// <param name="type">类型</param>
 /// <param name="filter">选择类型</param>
 /// <param name="isFilter">是否完全匹配选择类型</param>
 /// <param name="isAttribute">是否匹配自定义属性类型</param>
 /// <param name="isBaseType">是否搜索父类自定义属性</param>
 /// <param name="isInheritAttribute">自定义属性类型是否可继承</param>
 /// <returns>匹配成员方法集合</returns>
 public static methodInfo[] GetMethods <attributeType>(Type type, memberFilter filter, bool isFilter, bool isAttribute, bool isBaseType, bool isInheritAttribute)
     where attributeType : ignore
 {
     return(getMethods <attributeType>(type, GetMethods(type, filter, isFilter), isAttribute, isBaseType, isInheritAttribute));
 }
Beispiel #11
0
 /// <summary>
 /// 获取匹配成员方法集合
 /// </summary>
 /// <param name="type">类型</param>
 /// <param name="filter">选择类型</param>
 /// <param name="isFilter">是否完全匹配选择类型</param>
 /// <returns>匹配的成员方法集合</returns>
 public static list <methodInfo> GetMethods(Type type, memberFilter filter, bool isFilter)
 {
     return(getMethods(type).getFind(value => isFilter ? (value.Filter & filter) == filter : ((value.Filter & filter) != 0)));
 }