Пример #1
0
        private static string Render(ITemplate template, DataConversionParameters parameters)
        {
            template.Initialize(new
            {
                Variable = parameters.Variable,
                Value    = parameters.Value,

                HasDefaultValue = PropertyModelBase.GetDefaultValue(parameters.Schema) != null,
                DefaultValue    = PropertyModelBase.GetDefaultValue(parameters.Schema),

                Type = parameters.Resolver.Resolve(parameters.Schema, parameters.IsPropertyNullable, parameters.TypeNameHint),

                IsNewableObject = IsNewableObject(parameters.Schema),
                IsDate          = parameters.Schema.Format == JsonFormatStrings.DateTime,

                IsDictionary                   = parameters.Schema.IsDictionary,
                DictionaryValueType            = parameters.Resolver.TryResolve(parameters.Schema.AdditionalPropertiesSchema, parameters.TypeNameHint) ?? "any",
                IsDictionaryValueNewableObject = parameters.Schema.AdditionalPropertiesSchema != null && IsNewableObject(parameters.Schema.AdditionalPropertiesSchema),
                IsDictionaryValueDate          = parameters.Schema.AdditionalPropertiesSchema?.Format == JsonFormatStrings.DateTime,

                IsArray                  = parameters.Schema.Type.HasFlag(JsonObjectType.Array),
                ArrayItemType            = parameters.Resolver.TryResolve(parameters.Schema.Item, parameters.TypeNameHint) ?? "any",
                IsArrayItemNewableObject = parameters.Schema.Item != null && IsNewableObject(parameters.Schema.Item),
                IsArrayItemDate          = parameters.Schema.Item?.Format == JsonFormatStrings.DateTime
            });
            return(template.Render());
        }
Пример #2
0
        /// <summary>Generates the code to convert a data object to the target class instances.</summary>
        /// <param name="variable">The variable to assign the converted value to.</param>
        /// <param name="value">The variable containing the original value.</param>
        /// <param name="schema">The schema.</param>
        /// <param name="isPropertyNullable">Value indicating whether the value is nullable.</param>
        /// <param name="typeNameHint">The type name hint.</param>
        /// <returns>The generated code.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="schema"/> is <see langword="null" />.</exception>
        public string GenerateDataConversion(string variable, string value, JsonSchema4 schema, bool isPropertyNullable, string typeNameHint)
        {
            if (schema == null)
            {
                throw new ArgumentNullException(nameof(schema));
            }

            var template = new DataConversionTemplate() as ITemplate;

            template.Initialize(new // TODO: Create model class
            {
                Variable = variable,
                Value    = value,

                HasDefaultValue = PropertyModelBase.GetDefaultValue(schema) != null,
                DefaultValue    = PropertyModelBase.GetDefaultValue(schema),

                Type = _resolver.Resolve(schema, isPropertyNullable, typeNameHint),

                IsNewableObject = IsNewableObject(schema),
                IsDate          = schema.Format == JsonFormatStrings.DateTime,

                IsDictionary                   = schema.IsDictionary,
                DictionaryValueType            = _resolver.TryResolve(schema.AdditionalPropertiesSchema, typeNameHint),
                IsDictionaryValueNewableObject = schema.AdditionalPropertiesSchema != null && IsNewableObject(schema.AdditionalPropertiesSchema),
                IsDictionaryValueDate          = schema.AdditionalPropertiesSchema?.Format == JsonFormatStrings.DateTime,

                IsArray                  = schema.Type.HasFlag(JsonObjectType.Array),
                ArrayItemType            = _resolver.TryResolve(schema.Item, typeNameHint),
                IsArrayItemNewableObject = schema.Item != null && IsNewableObject(schema.Item),
                IsArrayItemDate          = schema.Item?.Format == JsonFormatStrings.DateTime
            });
            return(template.Render());
        }