【问题标题】:C# Attribute PropertyType ReflectionC# 属性 PropertyType 反射
【发布时间】:2010-11-21 12:42:48
【问题描述】:

我正在尝试从属性构造函数中确定与属性相关的属性的类型。更具体的我正在寻找包含该属性的类。

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

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

        this._definingClass = DefiningClass;

但我希望它看起来像:

   public IndexedCategoryAttribute(String HeaderText, int Index)
    {

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

我相信这将为属性的用户提供更安全的代码,因为目前它在属性定义中需要一个“typeof(MyClass)”,这会导致提供错误类型的可能性?

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

【问题讨论】:

  • 需要考虑的事项 - Microsoft 已经使用 Xceed 的 DataGrid for Visual Studio 2010 本身。
  • 这与问题有什么关系?

标签: c# reflection properties attributes


【解决方案1】:

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

关系是相反的:

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

属性没有“有”类型。

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

【讨论】:

  • 谢谢,我希望我可以保留与属性本身中的索引有关的所有内容,但是我确实可以在类型描述符中做到这一点
猜你喜欢
  • 2017-05-31
  • 2023-04-10
  • 2010-09-22
  • 1970-01-01
  • 2011-02-11
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多