/// <summary> /// Creates a <see cref="TypeScriptTranspiler"/>. /// </summary> /// <param name="typeDefinitionTranslator">Translator used to translate type definitions.</param> /// <exception cref="ArgumentNullException">Thrown when <paramref name="typeDefinitionTranslator"/> is null.</exception> public TypeScriptTranspiler(IConfigurationSource configurationSource, ITypeDefinitionTranslator typeDefinitionTranslator) { if (configurationSource == null) { throw new ArgumentNullException(nameof(configurationSource)); } _configuration = configurationSource.GetSection <TranspilationConfiguration>() ?? TranspilationConfiguration.Default; _typeDefinitionTranslator = typeDefinitionTranslator ?? throw new ArgumentNullException(nameof(typeDefinitionTranslator)); }
private string GetDefaultConstructorCall(Type type, TranspilationConfiguration configuration, ITypeReferenceTranslator typeReferenceTranslator) { var unconstructables = new[] { typeof(string), typeof(object) }; if (configuration.CustomTypeMaps.Any(map => map.MapsType(type)) || !type.IsClass || unconstructables.Contains(type) || type.IsGenericParameter) { return(_defaultValueAssignments[DefaultValueStrategy.PrimitiveDefaults](type)); } return($" = new {typeReferenceTranslator.Translate(type).ReferencedTypeName}()"); }
/// <summary> /// Creates a DefaultValueProvider. /// </summary> /// <param name="configurationSource">Configuration that the provider should respect.</param> /// <param name="logger">Logger to use for writing log messages.</param> public DefaultValueProvider(IConfigurationSource configurationSource, ILogger logger, ITypeReferenceTranslator typeReferenceTranslator) { if (configurationSource is null) { throw new ArgumentNullException(nameof(configurationSource)); } _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _configuration = configurationSource.GetSection <TranspilationConfiguration>() ?? TranspilationConfiguration.Default; _defaultValueAssignments.Add(DefaultValueStrategy.DefaultConstructor, type => GetDefaultConstructorCall(type, _configuration, typeReferenceTranslator)); }
/// <summary> /// Creates a <see cref="CustomMappedTranslationStrategy"/>. /// </summary> /// <param name="configurationSource">Source for the configuration that should be used.</param> /// <param name="translator">Full translator that can be used to translate parts of the complete type reference.</param> public CustomMappedTranslationStrategy(IConfigurationSource configurationSource, ITypeReferenceTranslator translator) : base(translator) { _configuration = configurationSource.GetSection <TranspilationConfiguration>() ?? TranspilationConfiguration.Default; }
/// <summary> /// Creates a <see cref="DefaultTypeReferenceTranslator"/>. /// </summary> /// <param name="configurationSource">Source for the configuration that should be used.</param> public DecoratorTranslator(IConfigurationSource configurationSource) { _configuration = configurationSource.GetSection <TranspilationConfiguration>(); }