using System; using System.Collections.Generic; using System.Linq; using System.Text; using Newtonsoft.Json.Utilities; using System.Globalization; namespace Newtonsoft.Json { /// /// Instructs the to use the specified when serializing the member or class. /// [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface | AttributeTargets.Enum | AttributeTargets.Parameter, AllowMultiple = false)] public sealed class JsonConverterAttribute : Attribute { private readonly Type _converterType; /// /// Gets the type of the converter. /// /// The type of the converter. public Type ConverterType { get { return _converterType; } } /// /// Initializes a new instance of the class. /// /// Type of the converter. public JsonConverterAttribute(Type converterType) { if (converterType == null) throw new ArgumentNullException("converterType"); _converterType = converterType; } internal static JsonConverter CreateJsonConverterInstance(Type converterType) { try { return (JsonConverter)Activator.CreateInstance(converterType); } catch (Exception ex) { throw new Exception("Error creating {0}".FormatWith(CultureInfo.InvariantCulture, converterType), ex); } } } }