Рефлексия. Достать методы из класса, которые помечены атрибутом - C#
Формулировка задачи:
Допустим имеем такой код :
Подскажите как достать методы под "флагом" Func.
class Test
{
[Func] static public void Method1(){ }
[Func] static public void Method2(){ }
static public void NotMethod(){ }
}Решение задачи: «Рефлексия. Достать методы из класса, которые помечены атрибутом»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
Assembly asm = Assembly.GetExecutingAssembly();
Type t = asm.GetType("ConsoleApplication1.Test");
MethodInfo[] methods = t.GetMethods(BindingFlags.Public | BindingFlags.Static)
.Where(mi => mi.GetCustomAttributes(false)
.Select(a => a.ToString() == typeof(Func).ToString()).FirstOrDefault())
.ToArray();
}
}
class Test {
[Func]
public static void Method_1() {
}
[Func]
public static void Method_2() {
}
public static void Method_3() {
}
}
[AttributeUsage(AttributeTargets.Method)]
class Func : Attribute {
}
}