C#属性PropertyType反射

时间:2009-08-21 00:56:34

标签: c# reflection properties attributes

我试图从属性构造函数中确定属性所涉及的属性的类型。更具体我正在寻找包含该属性的类。

我当前的构造函数如下所示:

    public IndexedCategoryAttribute(Type DefiningClass, String HeaderText, int Index)
    {

        this._definingClass = DefiningClass;

但我希望它看起来像:

   public IndexedCategoryAttribute(String HeaderText, int Index)
    {

        PropertyInfo Info = ???
        this._definingClass = Info.DeclaringType;

我相信这会为属性的用户提供更安全的代码,因为目前它在Attribute定义中需要'typeof(MyClass)',这会打开提供错误类型的可能性吗?

有关详细信息,我将其与propertygrid一起使用。该类型在static Dictionary<Type, Dictionary<String, int>>中用于将类别分组到与其相关的类。

1 个答案:

答案 0 :(得分:3)

我不认为属性在实例化时可以知道它们所关联的类型或属性。

关系走向另一条道路:

  • 属性具有属性
  • 类型具有属性
  • 方法有属性

属性不具有“拥有”类型。

构建网格时,应该按照建议的方向进行扫描。对于集合中的每种类型,您可以反映以确定附加到该类型的属性(或深入到属性上的属性),如果这些属性是您的类别属性,则添加到字典中。