Как получить весь класс с помощью пользовательского атрибута
Привет.
у меня есть атрибут расширения класса AIName, подобный этому:
public class AIName : Attribute { /// <summary> /// Return name of AI /// </summary> /// <returns></returns> private string name; public AIName(string name) { this.name = name; } public string GetAIName() { return name; } }
и мало кто из классов использует пользовательский атрибут, подобный этому:
[AIName("aggressive")] public class AggressiveNpcAI2 : GeneralNpcAI2 { } [AIName("npc")] public class NpcAI2 : AITemplate { }
Поэтому я хотел бы получить все пользовательские атрибуты, где классы используют атрибут AIName.
Что я уже пробовал:
Я попробовал этот код ниже, но он просто может получить 1 класс, который я даю только имя класса.
public void Init() { Type type = typeof(AggressiveNpcAI2); object[] attributes = type.GetCustomAttributes(true); foreach (object attribute in attributes) { AIName da = attribute as AIName; if (da != null) Console.WriteLine("AI Name: {0}", da.GetAIName()); else Console.WriteLine(); } }
Simon_Whale
Существует ли только один атрибут для каждого класса?
EADever
Да, только один атрибут на класс.