Exemple #1
0
        public static object GetDefaultValue(this MemberInfo memberInfo)
        {
            ChoPropertyInfoAttribute memberInfoAttribute = ChoType.GetMemberAttribute <ChoPropertyInfoAttribute>(memberInfo);

            if (memberInfoAttribute != null)
            {
                return(memberInfoAttribute.DefaultValue);
            }
            else
            {
                return(null);
            }
        }
Exemple #2
0
        public static object GetConvertedDefaultValue(this MemberInfo memberInfo)
        {
            ChoPropertyInfoAttribute memberInfoAttribute = ChoType.GetMemberAttribute <ChoPropertyInfoAttribute>(memberInfo);

            if (memberInfoAttribute != null)
            {
                return(ChoConvert.ConvertFrom(null, memberInfoAttribute.DefaultValue, ChoType.GetMemberType(memberInfo),
                                              ChoTypeDescriptor.GetTypeConverters(memberInfo), ChoTypeDescriptor.GetTypeConverterParams(memberInfo)));
            }
            else
            {
                return(null);
            }
        }
Exemple #3
0
        private static void ExtractAndPopulateValues <T>(T target, IDataReader dr, ChoDataObjectAttribute objAttr)
        {
            MemberInfo[] memberInfos = ChoTypeMembersCache.GetAllMemberInfos(target.GetType());
            if (memberInfos != null && memberInfos.Length > 0)
            {
                string name;
                string fallbackValue = null;
                object memberValue   = null;
                object newValue      = null;
                object defaultValue  = null;
                object value         = null;

                ChoPropertyInfoAttribute memberInfoAttribute = null;

                foreach (MemberInfo memberInfo in memberInfos)
                {
                    name        = ChoType.GetMemberName(memberInfo);
                    memberValue = null;
                    newValue    = null;
                    value       = null;

                    memberInfoAttribute = (ChoPropertyInfoAttribute)ChoType.GetMemberAttributeByBaseType(memberInfo, typeof(ChoPropertyInfoAttribute));

                    try
                    {
                        if (dr.FieldExists(name))
                        {
                            value = dr[name];
                        }
                        try
                        {
                            defaultValue = memberInfo.GetDefaultValue();
                            //if (memberInfoAttribute != null)
                            //{
                            //    if (!memberInfoAttribute.DefaultValue.IsNullOrWhiteSpace())
                            //        defaultValue = ChoString.ExpandPropertiesEx(memberInfoAttribute.DefaultValue);
                            //}
                        }
                        catch
                        {
                            defaultValue = null;
                        }

                        try
                        {
                            if (memberInfoAttribute != null)
                            {
                                if (!memberInfoAttribute.FallbackValue.IsNullOrWhiteSpace())
                                {
                                    fallbackValue = ChoString.ExpandPropertiesEx(memberInfoAttribute.FallbackValue);
                                }
                            }
                        }
                        catch
                        {
                            fallbackValue = null;
                        }

                        newValue = memberValue = value;

                        if (newValue.IsNullOrDbNull())
                        {
                            if (fallbackValue == null)
                            {
                                newValue = defaultValue;
                            }
                            else
                            {
                                newValue = fallbackValue;
                            }
                        }

                        newValue = ChoConvert.ConvertFrom(newValue, memberInfo, target);
                        //                    newValue = ChoConvert.ConvertFrom(target, newValue, ChoType.GetMemberType(memberInfo),
                        //ChoTypeDescriptor.GetTypeConverters(memberInfo), ChoTypeDescriptor.GetTypeConverterParams(memberInfo));

                        if (newValue == null)
                        {
                        }
                        else
                        {
                            ChoType.SetMemberValue(target, memberInfo, newValue);
                        }
                    }
                    catch (Exception)
                    {
                        if (objAttr == null || (objAttr != null && !objAttr.Silent))
                        {
                            throw;
                        }
                    }
                }
            }
        }