我想初始化以下程序集中的类,这些类使用反射从EntityBase
类继承。
我猜测lambda表达式是正确的,但我不知道如何从types2
中获得这两个类(程序集中有两个类继承了EntityBase
(。
Assembly a = Assembly.LoadFrom("X:\Workspace\Operations\ItemSupplierSetupRequest\Main\Source\ItemSupplierSetupRequest.Entity\bin\Debug\xxxx.ItemSupplierSetupRequest.Entity.dll");
IEnumerable<Type> types2 =
a.GetTypes().Where(x => x.BaseType.ToString().Equals("xxxx.ItemSupplierSetupRequest.Entity.EntityBase"));
我也试过
var result =
a.GetTypes().Where(x => x.BaseType.FullName.Equals("xxxx.ItemSupplierSetupRequest.Entity.EntityBase"));
但不知道如何使用或检查这是否返回这两个类?
您的查询可能会工作。但是不需要使用Equals()
或使用字符串比较类型。您可以使用(假设EntityBase
在引用的程序集中,其命名空间在using
中(:
a.GetTypes().Where(x => x.BaseType == typeof(EntityBase))
请记住,这不会返回从EntityBase
继承的所有类型,只返回直接从其继承的类型。