4 c# reflection attributes getcustomattributes
我有一些代码来定义自定义属性然后读入代码,它无法工作.为了尝试解决问题我已经回去并尝试使用DisplayName,但是,我仍然遇到相同的问题GetCustomAttribute或GetCustomAttributes无法列出它们.我有一个例子如下.
我在类中设置了DisplayName属性,例如......
class TestClass
{
public TestClass() { }
[DisplayName("this is a test")]
public long testmethod{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我有一些代码列出上面类中每个方法的DisplayName属性.
TestClass testClass = new TestClass();
Type type = testClass.GetType();
foreach (MethodInfo mInfo in type.GetMethods())
{
DisplayNameAttribute attr = (DisplayNameAttribute)Attribute.GetCustomAttribute(mInfo, typeof(DisplayNameAttribute));
if (attr !=null)
{
MessageBox.Show(attr.DisplayName);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是没有列出DisplayName属性,上面的代码编译,运行并且不显示任何消息框.
我甚至尝试使用GetCustomAttributes的每个循环,再次列出每个方法的所有属性,从未列出DisplayName属性,但是,我确实获得了编译属性和其他此类系统属性.
任何人都知道我做错了什么?
更新 - 非常感谢NerdFury指出我使用的是Method而不是Properties.一旦改变,每件事都有效.
Ner*_*ury 10
您将属性放在属性而不是方法上.请尝试以下代码:
TestClass testClass = new TestClass();
Type type = testClass.GetType();
foreach (PropertyInfo pInfo in type.GetProperties())
{
DisplayNameAttribute attr = (DisplayNameAttribute)Attribute.GetCustomAttribute(pInfo, typeof(DisplayNameAttribute));
if (attr !=null)
{
MessageBox.Show(attr.DisplayName);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4365 次 |
| 最近记录: |