You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.2 KiB
76 lines
2.2 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace Apewer.Web
|
|
{
|
|
|
|
/// <summary></summary>
|
|
[Serializable]
|
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
|
public class ApiAttribute : Attribute
|
|
{
|
|
|
|
private const bool DefaultVisible = true;
|
|
|
|
private string _name = "";
|
|
private string _caption = "";
|
|
private bool _visible = DefaultVisible;
|
|
|
|
/// <summary></summary>
|
|
public string Name { get { return _name; } }
|
|
|
|
/// <summary></summary>
|
|
public string Caption { get { return _caption; } }
|
|
|
|
/// <summary></summary>
|
|
public bool Visible { get { return _visible; } }
|
|
|
|
private void Initialize(string name = "", string caption = "", bool visible = DefaultVisible)
|
|
{
|
|
_name = string.IsNullOrEmpty(name) ? "" : name.ToLower().Trim();
|
|
_caption = string.IsNullOrEmpty(caption) ? "" : caption.Trim();
|
|
_visible = visible;
|
|
}
|
|
|
|
/// <summary></summary>
|
|
public ApiAttribute(string name = null, string caption = null, bool visible = DefaultVisible)
|
|
{
|
|
Initialize(name, caption, visible);
|
|
}
|
|
|
|
/// <summary></summary>
|
|
public static string GetName(Type type, bool inherit = true)
|
|
{
|
|
if (type == null) return null;
|
|
|
|
var name = null as string;
|
|
var attributes = type.GetCustomAttributes(typeof(ApiAttribute), inherit);
|
|
if (attributes.Length > 0)
|
|
{
|
|
var attribute = attributes[0] as ApiAttribute;
|
|
name = attribute.Name;
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(name)) name = type.Name;
|
|
return name;
|
|
}
|
|
|
|
/// <summary></summary>
|
|
public static string GetCaption(Type type, bool inherit = true)
|
|
{
|
|
if (type == null) return null;
|
|
|
|
var attributes = type.GetCustomAttributes(typeof(ApiAttribute), inherit);
|
|
if (attributes.Length > 0)
|
|
{
|
|
var attribute = attributes[0] as ApiAttribute;
|
|
return attribute.Caption;
|
|
}
|
|
|
|
return type.Name;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|