Red de conocimiento informático - Conocimiento informático - Cómo obtener propiedades personalizadas de una clase o atributo

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",

atributo.Property.Name, atributo.PrimaryKeyAtt.IsIdentity, atributo.PrimaryKeyAtt.Column);

}