gpt4 book ai didi

c# - 自定义属性,例如未随 GetCustomAttribute 一起列出的 Displayname

转载 作者:太空狗 更新时间:2023-10-30 00:21:25 27 4
gpt4 key购买 nike

我有一些代码来定义自定义属性,然后读入代码,它无法工作。为了尝试解决问题,我返回并尝试使用 DisplayName,但是,我仍然遇到相同的问题 GetCustomAttribute 或 GetCustomAttributes 无法列出它们。我在下面有一个例子。

我在类中设置了 DisplayName 属性,例如...

class TestClass
{
public TestClass() { }

[DisplayName("this is a test")]
public long testmethod{ get; set; }
}

然后我有一些代码来列出上面类中每个方法的 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);

}


}

问题是没有列出 DisplayName 属性,上面的代码编译、运行但不显示任何消息框。

我什至尝试将 for each 循环与 GetCustomAttributes 一起使用,再次列出每个方法的所有属性,但从未列出 DisplayName 属性,但是,我确实获得了编译属性和其他此类系统属性。

有人知道我做错了什么吗?

更新 - 非常感谢 NerdFury 指出我使用的是方法而不是属性。更改后一切正常。

最佳答案

您将属性放在属性上,而不是方法上。试试下面的代码:

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);
}
}

关于c# - 自定义属性,例如未随 GetCustomAttribute 一起列出的 Displayname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com