无法读取自定义属性

时间:2018-02-01 11:39:54

标签: c# custom-attributes

我在阅读自定义属性时遇到问题 我已经阅读了更多关于此的教程,但无法读取该值。

注意:我使用控制台应用程序。

主类

namespace IRCBotter
{
    public class IrcBot
    {
        [UserLevel(LevelRequired = 10)]
        void HelpCommand(string user)
        {
            GetAttribute(typeof(IrcBot));
        }

        public static void GetAttribute(Type t)
        {
            // Get instance of the attribute.
            UserLevel MyAttribute =
                   (UserLevel)Attribute.GetCustomAttribute(t, typeof(UserLevel));

               if (MyAttribute == null)
               {
                   Message.Error("The attribute was not found.");
               }
               else
               {
                   // Get the Name value.
                   Message.Error("Valore " + MyAttribute.LevelRequired.ToString());
               }
           }
     }
}

属性类

namespace IRCBotter.Commands
{
    [AttributeUsage(AttributeTargets.All ,AllowMultiple=true)]
    class UserLevel : Attribute
    {
        public int LevelRequired { get; set; }
    }
}

在调试时,控制台说我“找不到属性”。
有一个简单的工作示例,可以从自定义属性中获取正确的值吗?

void HelpCommand 需要检查一个存储列表中存储的变量用户是否相等 他的水平是>在LevelRequired。

1 个答案:

答案 0 :(得分:2)

您尚未在类上声明属性,而是在方法HelpCommand上定义了该属性。您必须获取MethodInfo的{​​{1}}并在其上调用HelpCommand。这些方面的东西。

GetCustomAttribute