获取继承链

Babybus-u3d技术交流-获取继承链

打算用ICode做整个框架的逻辑,发现有挺多不尽人意的地方,无奈只能从源代码开始着手改造。

获取继承链_第1张图片
1.png

点击添加Action时会动态的添加一些已有的组件,看了源代码发现只要是继承至StateAction的类都会被添加到这边。

获取继承链_第2张图片
2.png

这是这个功能的核心代码。其中获取子类的代码很有意思。

static
IEnumerable GetSubclassTypes(Type mType){

return
AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes()) .Where(type => type.IsSubclassOf(mType) && type.IsClass && !type.IsAbstract);

}

如果你想查找某个类或者接口向下的继承链用
AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes()).Where(type => mType.IsAssignableFrom(type) && type != mType);

以Graphic为例

获取继承链_第3张图片
3.png

如果你想查找某个类或者接口向上的继承链用
AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes()).Where(type => type.IsAssignableFrom(mType) && type != mType);
以Image为例

获取继承链_第4张图片
4.png

你可能感兴趣的:(获取继承链)