【发布时间】:2013-02-10 12:05:51
【问题描述】:
例如,我有一个带有属性和属性的类:
[MyDisplay(Name = "Class name", Description = "Class description.")]
public class MyClass
{
[MyDisplay(Name = "Property name", Description = "Property description.")]
public int MyProperty { get; set; }
}
我想得到类似的属性值
// Get type attribute...
string className = MyClass.Attributes.MyDisplay.Name;
// Get member attribute...
string propertyDescription =
MyClass.Properties.MyProperty.Attributes.MyDisplay.Description;
如何获得?我想要使用属性数据自动填充 MyClass 的附加字段的代码。访问实例值等属性值似乎非常方便 - 用于绑定等。
主要的复杂性是用名称与属性和属性名称相同的对象填充 MyClass.Attributes 和 MyClass.Properties 集合。所以我认为这个集合必须是静态的。并且 MyClass.Properties 集合中的每个对象也必须像 MyClass.Attributes 集合一样具有 Attributes 集合(例如 MyProperty.Attributes)。
【问题讨论】:
-
“实例级别属性”是什么意思?你想如何在你的代码中声明?
-
属性“显示”在 MyClass 上无效。它仅对“方法、属性、索引器、字段、参数”声明有效。还是您实现了自己的 Display 属性?
-
rene,它可以是类的任何有效属性。为了清楚起见,我更改了它的名称。
标签: c# properties attributes