Cómo obtener propiedades personalizadas de una clase o atributo
1. Defina una clase de atributo que termine con Attribute. La clase de atributo hereda de System.Attribute, como se muestra a continuación.
[AttributeUsage(AttributeTargets.Property, AllowMultiple=false)]
clase pública PrimaryKeyAttribute: System.Attribute
{
.............
Dónde AttributeTargets Es un valor de enumeración, que puede ser: Ensamblaje | Clase | Enum | Método de constructor | Interfaz personalizada | etiqueta de atributo, como se muestra a continuación.
[PrimaryKey(Column = "CustomerID", IsIdentity=false)]
public int ID
{
.............
3. Para obtener la información de las características personalizadas, necesitamos obtener sus datos a través de la reflexión. Primero, definimos una clase. para almacenar esta información de la siguiente manera
public class PrimaryKeyModel
{
propertyInfo de solo lectura privada propertyInfo;//Información del campo de atributo de las claves externas
privado de solo lectura PrimaryKeyAttribute PrimaryKeyAtt;//Información característica de las claves externas
............
public static PrimaryKeyModel GetPrimaryKey(Type type)
{
PropertyInfo[] propiedades = type.GetProperties();
foreach (PropertyInfo p en propiedades)
{
objeto[] claves = p.GetCustomAttributes(typeof(PrimaryKeyAttribute), true);
if (keys.Length == 1)
{
p>
devuelve nuevo PrimaryKeyModel(p, claves[0] como PrimaryKeyAttribute);
}
}
devuelve nulo;
}
4. El código de información para obtener sus características en la clase Cliente es el siguiente
string strReturn = string.Empty
//Get Nombre de clave primaria
Atributo PrimaryKeyModel= PrimaryKeyModel.GetPrimaryKey(this.GetType());
if(atributo !
= null)
{
strReturn += string.Format("Nombre de clave principal:{0} IsIdentity:{1} Columna:{2}\r\n", p>
atributo.Property.Name, atributo.PrimaryKeyAtt.IsIdentity, atributo.PrimaryKeyAtt.Column);
}