一尘不染

如何枚举具有自定义类属性的所有类?

c#

基于MSDN示例的问题

假设我们在独立的桌面应用程序中有一些带有HelpAttribute的C#类。是否可以枚举具有此类属性的所有类?这样识别班级有意义吗?自定义属性将用于列出可能的菜单选项,选择项将带到此类的屏幕实例。类/项目的数量将缓慢增长,但是我认为这样可以避免在其他地方枚举它们。


阅读 315

收藏
2020-05-19

共1个答案

一尘不染

是的,一点没错。使用反射:

static IEnumerable<Type> GetTypesWithHelpAttribute(Assembly assembly) {
    foreach(Type type in assembly.GetTypes()) {
        if (type.GetCustomAttributes(typeof(HelpAttribute), true).Length > 0) {
            yield return type;
        }
    }
}
2020-05-19