/// <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); }
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>(); }