我有一个自定义控件和一些从它派生的控件。 我需要获取当前程序集中所有派生自主类的类,并检查它们的属性。 如何完成这个任务?
我有一个自定义控件和一些从它派生的控件。 我需要获取当前程序集中所有派生自主类的类,并检查它们的属性。 如何完成这个任务?
var type = typeof(MainClass);
var listOfDerivedClasses = Assembly.GetExecutingAssembly()
.GetTypes()
.Where(x => x.IsSubclassOf(type))
.ToList();
foreach (var derived in listOfDerivedClasses)
{
var attributes = derived.GetCustomAttributes(typeof(TheAttribute), true);
// etc.
}
您可以使用反射:
Type baseType = ...
var descendantTypes =
from type in baseType.Assembly.GetTypes()
where !type.IsAbstract
&& type.IsSubclassOf(baseType)
&& type.IsDefined(typeof(TheCustomAttributeYouRequire), true)
select type;
你可以从那里开始。
var asm = Assembly.GetAssembly(typeof(MyClass));
var listOfClasses = asm.GetTypes().Where(x => x.IsSubclassOf(typeof(MyClass)));
(为了节省滚动,分成两行)