JD2022-TU1/main/tools/framework/JD.TeaBoxAddinSystem/Addins/Internal/AddinManifest.cs

180 lines
4 KiB
C#

using System;
using JD.Kernel.StaticHelpers;
namespace JD.TeaBoxAddinSystem.Addins.Internal
{
/// <summary>
/// An <see cref="AddinManifest"/> forms the identity of an <see cref="Addin"/>.
/// </summary>
/// <remarks>
/// All fields are optional.
/// </remarks>
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
/// <summary>
/// Constructor. Id is generated.
/// </summary>
/// <param name="addin"></param>
public AddinManifest(Addin addin)
: this(addin, null)
{
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="addin"></param>
/// <param name="id">Id of the addin. If null or empty, it will be autogenerated.</param>
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
/// <summary>
/// Id of the addin.
/// </summary>
public string Id
{
get { return m_id; }
}
/// <summary>
/// Name of the addin.
/// </summary>
public string Name
{
get { return m_name; }
set
{
m_owner.ThrowIfLoaded();
m_name = value;
}
}
/// <summary>
/// Version of the addin.
/// </summary>
public Version Version
{
get { return m_version; }
set
{
Throw.IfNull(value, "Version");
m_owner.ThrowIfLoaded();
m_version = value;
}
}
/// <summary>
/// Author of the addin.
/// </summary>
public string Author
{
get { return m_author; }
set
{
m_owner.ThrowIfLoaded();
m_author = value;
}
}
/// <summary>
/// Url of the addin.
/// </summary>
public string Url
{
get { return m_url; }
set
{
m_owner.ThrowIfLoaded();
m_url = value;
}
}
/// <summary>
/// Description of the addin.
/// </summary>
public string Description
{
get { return m_description; }
set
{
m_owner.ThrowIfLoaded();
m_description = value;
}
}
/// <summary>
/// Category of the addin.
/// </summary>
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;
}
}
/// <summary>
/// Full Id.
/// </summary>
public string FullId
{
get
{
return Id;
}
}
#endregion
#region Methods
private static string AutogenerateId()
{
const string AutogeneratedIdPrefix = "__autoid__";
return AutogeneratedIdPrefix + m_nextAutogeneratedId++;
}
#endregion
}
}