Esempio n. 1
0
        private CodeGenHint CreateHintFromInfo(HintInstantiationInfo info)
        {
            CodeGenHint hint = null;

            HintCreator hintCreator;

            if (_hintCreatorDictionary.TryGetValue(info.Kind, out hintCreator))
            {
                hint = hintCreator(info.Arguments);
            }

            return(hint);
        }
Esempio n. 2
0
        private void GenerateAdditionalType(CodeGenHint hint, JsonSchema schema)
        {
            // We do not handle the case where generating an additional type
            // causes still get another type to be generated. It wouldn't be hard
            // to add if needed.
            var enumHint = hint as EnumHint;

            if (enumHint != null)
            {
                GenerateAdditionalTypeFromEnumHint(enumHint, schema);
            }
            else
            {
                throw Error.CreateException(
                          Resources.ErrorCannotGenerateAdditionalTypeFromHintType,
                          nameof(CodeGenHint),
                          hint.GetType().Name);
            }
        }
Esempio n. 3
0
        private void InstantiateHints(HintInstantiationInfoDictionary infoDictionary)
        {
            foreach (string key in infoDictionary.Keys)
            {
                var hints = new List <CodeGenHint>();
                foreach (HintInstantiationInfo info in infoDictionary[key])
                {
                    CodeGenHint hint = CreateHintFromInfo(info);
                    if (hint == null)
                    {
                        throw new ApplicationException(
                                  $"Cannot create a code generation hint of unrecognized kind '{info.Kind}'.");
                    }

                    hints.Add(hint);
                }

                this[key] = hints.ToArray();
            }
        }
 private void OnAdditionalTypeRequired(CodeGenHint hint, JsonSchema schema)
 {
     _additionalTypeRequiredDelegate?.Invoke(
         new AdditionalTypeRequiredInfo(hint, schema));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AdditionalTypeRequiredInfo"/> type;
 /// </summary>
 /// <param name="hint">
 /// Hint that guides generation of the additional type.
 /// </param>
 /// <param name="schema">
 /// Schema to which the hint applies.
 /// </param>
 public AdditionalTypeRequiredInfo(CodeGenHint hint, JsonSchema schema)
 {
     Hint   = hint;
     Schema = schema;
 }