查看属性是否应用于类属性中String类型的属性

本文关键字:属性 String 类型 应用于 是否 | 更新日期: 2023-09-27 18:23:56

说我有属性:

public class Column_Attribute : Attribute
{
    public string DbType { get; set; }
    public bool IsPrimaryKey { get; set; }
}

然后我可以将该属性应用于属性为:

 [Column_Attribute(DbType = "Integer", IsPrimaryKey = true)]
 public int Id { get; set; }   

现在,我如何从属性类中获取有关属性Id的信息。换句话说,我想做一些类似的事情:

public class Column_Attribute : Attribute
{
    // constructor
    public Column_Attribute(){
      // if the property has the name Id do something...
      // OR
      // if this is an attribute of a property do something
      // if this is an attribute of a field do something else
      // If this attribute is targeting a property that is a string do something
    }
    public string DbType { get; set; }
    public bool IsPrimaryKey { get; set; }
}

我实际上需要知道该属性是否应用于字符串属性

我知道如何使用反射来实现这一点,但我想在属性类中实现这一目标。这可能吗。希望我能正确地解释自己。

查看属性是否应用于类属性中String类型的属性

在没有反射的情况下无法执行此操作,因为只有调用GetCustomAttributes()(反射的一部分)才能执行构造函数中的代码。

参见http://msdn.microsoft.com/en-us/library/z919e8tw(v=vs.80).aspx

对SampleClass调用GetCustomAttributes会导致Author对象按照上述进行构建和初始化

如果希望属性类包含处理代码,可以创建一个接收属性名称的方法。在调用GetCustomAttributes()时,属性名称将可用。