protected override IValueProvider CreateMemberValueProvider(MemberInfo member) { var valueProvider = base.CreateMemberValueProvider(member); if (member is PropertyInfo propertyInfo) { var propertyTypeInfo = propertyInfo.PropertyType.GetTypeInfo(); if (propertyTypeInfo.IsGenericType && !propertyTypeInfo.IsGenericTypeDefinition) { var genericTypeDefinition = propertyTypeInfo.GetGenericTypeDefinition(); if (genericTypeDefinition == s_openStringEnumValueType || genericTypeDefinition == s_openNaType) { valueProvider = new StringValueProvider(valueProvider); } } } return(valueProvider); }
protected override IValueProvider CreateMemberValueProvider(MemberInfo member) { var valueProvider = base.CreateMemberValueProvider(member); if (member is PropertyInfo propertyInfo) { var propertyType = propertyInfo.PropertyType; var propertyTypeInfo = propertyType.GetTypeInfo(); if (propertyTypeInfo.IsGenericType && !propertyTypeInfo.IsGenericTypeDefinition) { var genericTypeDefinition = propertyTypeInfo.GetGenericTypeDefinition(); if (genericTypeDefinition == TypeData.OpenStringEnumValueType || genericTypeDefinition == TypeData.OpenNaType) { var propertyContract = ResolveContract(propertyType); valueProvider = new StringValueProvider(valueProvider, (IStringCreator)propertyContract.Converter); } } } return(valueProvider); }