示例#1
0
            /// <summary>
            /// Creates a new instance of the <see cref="ConnectionStringProperty"/> class.
            /// </summary>
            /// <param name="propertyInfo">The <see cref="PropertyInfo"/> object.</param>
            /// <param name="typeRegistry">
            /// Type registry to use when parsing <see cref="DefaultValueExpressionAttribute"/>
            /// instances. Set to <c>null</c> for default registry.
            /// </param>
            public ConnectionStringProperty(PropertyInfo propertyInfo, TypeRegistry typeRegistry = null)
            {
                SettingNameAttribute            settingNameAttribute;
                DefaultValueAttribute           defaultValueAttribute;
                DefaultValueExpressionAttribute defaultValueExpressionAttribute;
                TypeConverterAttribute          typeConverterAttribute;
                Type converterType;

                PropertyInfo = propertyInfo;
                Names        = propertyInfo.TryGetAttribute(out settingNameAttribute) ? settingNameAttribute.Names : new[] { propertyInfo.Name };

                bool hasDefaultValue           = propertyInfo.TryGetAttribute(out defaultValueAttribute);
                bool hasDefaultValueExpression = propertyInfo.TryGetAttribute(out defaultValueExpressionAttribute);

                Required = !hasDefaultValue && !hasDefaultValueExpression;

                if (Required)
                {
                    DefaultValue = null;
                }
                else
                {
                    if ((object)defaultValueAttribute == null)
                    {
                        ValueExpressionParser parser = new ValueExpressionParser(defaultValueExpressionAttribute, propertyInfo);

                        if ((object)typeRegistry != null)
                        {
                            parser.TypeRegistry = typeRegistry;
                        }

                        DefaultValue = parser.Eval();
                    }
                    else
                    {
                        DefaultValue = defaultValueAttribute.Value;
                    }
                }

                if (propertyInfo.TryGetAttribute(out typeConverterAttribute))
                {
                    converterType = Type.GetType(typeConverterAttribute.ConverterTypeName);

                    if ((object)converterType != null)
                    {
                        Converter = (TypeConverter)Activator.CreateInstance(converterType);
                    }
                }

                propertyInfo.TryGetAttributes(out ValidationAttributes);
            }
示例#2
0
        static ModelTests()
        {
            ValueExpressionParser <SimpleModel> .InitializeType();

            ValueExpressionParser <AdvancedModel> .InitializeType();

            s_createSimpleModel = ValueExpressionParser <SimpleModel> .CreateInstance();

            s_applyDefaultsToSimpleModel = ValueExpressionParser <SimpleModel> .ApplyDefaults();

            s_applyUpdatesToSimpleModel = ValueExpressionParser <SimpleModel> .UpdateInstance();

            s_createAdvancedModel = ValueExpressionParser <AdvancedModel> .CreateInstance <AdvancedModelContext>();

            s_applyDefaultsToAdvancedModel = ValueExpressionParser <AdvancedModel> .ApplyDefaults <AdvancedModelContext>();

            s_applyUpdatesToAdvancedModel = ValueExpressionParser <AdvancedModel> .UpdateInstance <AdvancedModelContext>();
        }