是否可以使用linq将基类中的所有派生对象添加到数组中
本文关键字:派生 对象 添加 数组 可以使 linq 基类 是否 | 更新日期: 2023-09-27 18:29:38
假设我有
class Foo
{
}
class Foo_Child : Foo
{
}
class FooBar : Foo
{
}
在C++中,我会在外部的某个地方创建一个Vector,并且必须单独添加继承的类。我最近开始学习C#和linq,我想知道是否有可能实现以下内容:
通过汇编,如果类是从foo继承的,则将其添加到列表中
而不是一个接一个地添加它们。如果是,你是怎么做的?
是的,这可以使用反射来实现。
通过汇编,如果类是从foo继承的,则将其添加到列表中
// First get the assembly
// In this example we load the currently executing assembly but
// you can load any assembly you would need
var assembly = Assembly.GetExecutingAssembly();
// Then you could use the GetTypes method to get all types from
// this assembly and then filter with LINQ
List<Type> derived = assembly
.GetTypes()
.Where(t => t != typeof(Foo)) // we don't want Foo itself
.Where(t => typeof(Foo).IsAssignableFrom(t)) // we want all types that are assignable to Foo
.ToList();
// at this stage derived will contain the Foo_Child and FooBar types