using System; using JD.Kernel.StaticHelpers; namespace JD.TeaBoxAddinSystem.Addins.Internal { /// /// An forms the identity of an . /// /// /// All fields are optional. /// public class AddinManifest { #region Variables private readonly Addin m_owner; private readonly string m_id; private string m_name; private Version m_version = new Version(); private string m_author; private string m_url; private string m_description; private string m_category; private bool m_x86only; private static int m_nextAutogeneratedId = 1; #endregion #region Constructor /// /// Constructor. Id is generated. /// /// public AddinManifest(Addin addin) : this(addin, null) { } /// /// Constructor. /// /// /// Id of the addin. If null or empty, it will be autogenerated. public AddinManifest(Addin addin, string id) { Throw.IfNull(addin, "addin"); m_owner = addin; m_id = string.IsNullOrEmpty(id) ? AutogenerateId() : id; m_name = id; } #endregion #region Properties /// /// Id of the addin. /// public string Id { get { return m_id; } } /// /// Name of the addin. /// public string Name { get { return m_name; } set { m_owner.ThrowIfLoaded(); m_name = value; } } /// /// Version of the addin. /// public Version Version { get { return m_version; } set { Throw.IfNull(value, "Version"); m_owner.ThrowIfLoaded(); m_version = value; } } /// /// Author of the addin. /// public string Author { get { return m_author; } set { m_owner.ThrowIfLoaded(); m_author = value; } } /// /// Url of the addin. /// public string Url { get { return m_url; } set { m_owner.ThrowIfLoaded(); m_url = value; } } /// /// Description of the addin. /// public string Description { get { return m_description; } set { m_owner.ThrowIfLoaded(); m_description = value; } } /// /// Category of the addin. /// public string Category { get { return m_category; } set { m_owner.ThrowIfLoaded(); m_category = value; } } public bool X86Only { get { return m_x86only; } set { m_owner.ThrowIfLoaded(); m_x86only = value; } } /// /// Full Id. /// public string FullId { get { return Id; } } #endregion #region Methods private static string AutogenerateId() { const string AutogeneratedIdPrefix = "__autoid__"; return AutogeneratedIdPrefix + m_nextAutogeneratedId++; } #endregion } }