// ctor. public OrmProperty(MemberInfo memberInfo) { Debug.Assert(memberInfo != null); PropertyName = memberInfo.Name; MemberType = memberInfo.GetMemberType(); var attribute = memberInfo.GetCustomAttribute <TypeConverterAttribute>(); if (attribute != null) { if (Type.GetType(attribute.ConverterTypeName) is Type converterType) { TypeConverter = StaticCache.TypeConverters.GetOrAdd(converterType, ConverterValueFactory); } else { throw new MicroOrmException($"Unable to resolve converter type {attribute.ConverterTypeName}"); } } if (DynamicReflectionDelegateFactory.CreateSet <object>(memberInfo) is { } setValueDelegate) { SetValueHandler = new SetValueDelegate(setValueDelegate); } IsNonNullable = NonNullableConvention.IsNonNullableReferenceType(memberInfo); }
///// <summary> ///// Конструктор для анонимного типа. ///// </summary> //public ConstructorArgument(int parameterIndex, PropertyInfo property) //{ // ParameterIndex = parameterIndex; // ParameterName = property.Name; // ParameterType = property.PropertyType; // IsNonNullable = NonNullableConvention.IsNonNullableReferenceType(property); //} public ConstructorArgument(ParameterInfo parameterInfo) { ParameterIndex = parameterInfo.Position; ParameterName = parameterInfo.Name !; ParameterType = parameterInfo.ParameterType; IsNonNullable = NonNullableConvention.IsNonNullableReferenceType(parameterInfo); if (parameterInfo.GetCustomAttribute <TypeConverterAttribute>() is TypeConverterAttribute typeConverter) { if (Type.GetType(typeConverter.ConverterTypeName) is Type converterType) { TypeConverter = StaticCache.TypeConverters.GetOrAdd(converterType, ConverterValueFactory); } else { throw new MicroOrmException($"Unknown converter tyoe '{typeConverter.ConverterTypeName}'"); } } }