在C#中使用自定义属性获取所有方法永远找不到方法

班约夫

所以我创建了这个函数来获取所有带有custom属性的方法 ExecuteFromConsole

    [ExecuteFromConsole("test", "help")]
    static void Test(string[] args)
    {
        Debug.Log("Test Ran");
    }

    public void AddAttributeCommands()
    {
        //get all methods with the execute attribute
        var methods = AppDomain.CurrentDomain.GetAssemblies()
                               .SelectMany(x => x.GetTypes())
                               .Where(x => x.IsClass)
                               .SelectMany(x => x.GetMethods())
                               .Where(x => x.GetCustomAttributes(typeof(ExecuteFromConsoleAttribute), false).FirstOrDefault() != null);

        //adds them to commands
        foreach (var method in methods) 
        {
            Debug.Log("Found attribute");
            ExecuteFromConsoleAttribute attribute = (ExecuteFromConsoleAttribute)method.GetCustomAttributes(typeof(ExecuteFromConsoleAttribute), false).First();
            if(!method.IsStatic)
            {
                Debug.LogError("ExecuteFromConsoleAttribute must be used on static functions only");
                continue;
            }
            CommandFunc func = (CommandFunc)Delegate.CreateDelegate(typeof(CommandFunc), method);
            AddCommand(attribute.command, func, attribute.help);
        }
    }

当我最初对其进行测试时,它工作得很好,但是现在它将永远不会进入foreach循环,Debug.log("found attribute")这意味着它找不到带有属性的明显在其正上方的方法。AFAIK我没有修改任何应该影响到此的东西。

是否有人对为什么它不起作用或我是否正在做错所有事情有真知灼见,而我应该有更好的方法来做呢?

如果影响到任何事情,该项目就是统一的

马克·格雷韦尔

默认GetMethods值为“任何公开”,但您的方法为非方法。尝试添加BindingFlags.NonPublic | BindingFlags.StaticGetMethods呼叫中,以给予更多提示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将不同的属性应用于所有方法的自定义类属性

来自分类Dev

将不同的属性应用于所有方法的自定义类属性

来自分类Dev

如何动态找出具有自定义属性的所有方法

来自分类Dev

如何在C#中使用反射获取方法的所有属性和属性数据

来自分类Dev

如何使用FOSRestBundle在Symfony 4 Controller的所有方法中设置自定义标头?

来自分类Dev

Perl MooseX :: Method :: Signatures将自定义代码注入所有方法

来自分类Dev

我添加到自定义Android视图的所有方法均导致NullPointerException

来自分类Dev

如何使用扩展方法对 C# 中的所有数据类型进行自定义验证

来自分类Dev

错误:找不到自定义方法的 Gradle DSL 方法

来自分类Dev

C#主要方法由自定义属性修饰

来自分类Dev

使用私有方法“defaultAnswer()”找不到符号

来自分类Dev

获取所有方法

来自分类Dev

获取我自己的模块中定义的所有方法

来自分类Dev

自定义django-admin命令-找不到方法

来自分类Dev

获取要在自定义属性中使用的属性值

来自分类Dev

获取要在自定义属性中使用的属性值

来自分类Dev

IntelliJ - 是否可以向控制器类的所有方法添加自定义注释,例如@SecurityCheck?

来自分类Dev

获取所有自定义DOM属性

来自分类Dev

在Windows中使用Java或C#添加自定义文件属性/属性

来自分类Dev

如何使用dnlib库获取所有方法的说明?

来自分类Dev

如何使用dnlib库获取所有方法的说明?

来自分类Dev

在类C#中运行所有方法

来自分类Dev

从C#事件获取自定义属性

来自分类Dev

如何获取类型的所有方法

来自分类Dev

在 C# 中使用反射访问对象中的自定义属性及其值

来自分类Dev

如何在 C# 中使用自定义域名获取当前 PathName?

来自分类Dev

获取操作中执行的方法的自定义属性

来自分类Dev

编译错误:找不到具有自定义属性的符号FragmentBindingImpl

来自分类Dev

Django:如何在序列化程序的自定义方法中使用模型属性?

Related 相关文章

  1. 1

    将不同的属性应用于所有方法的自定义类属性

  2. 2

    将不同的属性应用于所有方法的自定义类属性

  3. 3

    如何动态找出具有自定义属性的所有方法

  4. 4

    如何在C#中使用反射获取方法的所有属性和属性数据

  5. 5

    如何使用FOSRestBundle在Symfony 4 Controller的所有方法中设置自定义标头?

  6. 6

    Perl MooseX :: Method :: Signatures将自定义代码注入所有方法

  7. 7

    我添加到自定义Android视图的所有方法均导致NullPointerException

  8. 8

    如何使用扩展方法对 C# 中的所有数据类型进行自定义验证

  9. 9

    错误:找不到自定义方法的 Gradle DSL 方法

  10. 10

    C#主要方法由自定义属性修饰

  11. 11

    使用私有方法“defaultAnswer()”找不到符号

  12. 12

    获取所有方法

  13. 13

    获取我自己的模块中定义的所有方法

  14. 14

    自定义django-admin命令-找不到方法

  15. 15

    获取要在自定义属性中使用的属性值

  16. 16

    获取要在自定义属性中使用的属性值

  17. 17

    IntelliJ - 是否可以向控制器类的所有方法添加自定义注释,例如@SecurityCheck?

  18. 18

    获取所有自定义DOM属性

  19. 19

    在Windows中使用Java或C#添加自定义文件属性/属性

  20. 20

    如何使用dnlib库获取所有方法的说明?

  21. 21

    如何使用dnlib库获取所有方法的说明?

  22. 22

    在类C#中运行所有方法

  23. 23

    从C#事件获取自定义属性

  24. 24

    如何获取类型的所有方法

  25. 25

    在 C# 中使用反射访问对象中的自定义属性及其值

  26. 26

    如何在 C# 中使用自定义域名获取当前 PathName?

  27. 27

    获取操作中执行的方法的自定义属性

  28. 28

    编译错误:找不到具有自定义属性的符号FragmentBindingImpl

  29. 29

    Django:如何在序列化程序的自定义方法中使用模型属性?

热门标签

归档