myk*_*ola 22 .net c# reflection
考虑以下类层次结构:基类A,继承自A的类B和C以及继承自B的类D.
public class A {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码来查找A的所有子类,包括D:
var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));
Run Code Online (Sandbox Code Playgroud)
但是我只需要找到A的直接子类(例子中的B和C)并排除所有不直接从A继承的类(例如D).知道怎么做吗?
zim*_*nen 27
对于每种类型,请检查是否
type.BaseType == typeof(A)
Run Code Online (Sandbox Code Playgroud)
或者,您可以直接内联:
var types = assembly.GetTypes().Where(t => t.BaseType == typeof(baseType));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8140 次 |
最近记录: |