private CodeGenHint CreateHintFromInfo(HintInstantiationInfo info) { CodeGenHint hint = null; HintCreator hintCreator; if (_hintCreatorDictionary.TryGetValue(info.Kind, out hintCreator)) { hint = hintCreator(info.Arguments); } return(hint); }
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); } }
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; }