using Amazon.JSII.JsonModel.Spec; using Newtonsoft.Json; using System; namespace Amazon.JSII.Runtime.Deputy { [AttributeUsage(AttributeTargets.Property)] public sealed class JsiiPropertyAttribute : Attribute, IOptionalValue { public JsiiPropertyAttribute( string name, string typeJson, bool isOptional = false, // Unused, retained for backwards-compatibility bool isOverride = false) { Name = name ?? throw new ArgumentNullException(nameof(name)); Type = JsonConvert.DeserializeObject<TypeReference>(typeJson ?? throw new ArgumentNullException(nameof(typeJson))) ?? throw new ArgumentException("Invalid JSON descriptor", nameof(typeJson)); IsOptional = isOptional; } public string Name { get; } public TypeReference Type { get; } public bool IsOptional { get; } } }