Babybus-u3d技術(shù)交流-獲取繼承鏈
打算用ICode做整個(gè)框架的邏輯,發(fā)現(xiàn)有挺多不盡人意的地方台谊,無(wú)奈只能從源代碼開(kāi)始著手改造误堡。
點(diǎn)擊添加Action時(shí)會(huì)動(dòng)態(tài)的添加一些已有的組件,看了源代碼發(fā)現(xiàn)只要是繼承至StateAction的類都會(huì)被添加到這邊牺氨。
這是這個(gè)功能的核心代碼。其中獲取子類的代碼很有意思。
static
IEnumerable<Type> GetSubclassTypes(Type mType){
return
AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes()) .Where(type => type.IsSubclassOf(mType) && type.IsClass && !type.IsAbstract);
}
如果你想查找某個(gè)類或者接口向下的繼承鏈用
AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes()).Where(type => mType.IsAssignableFrom(type) && type != mType);
以Graphic為例
如果你想查找某個(gè)類或者接口向上的繼承鏈用
AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes()).Where(type => type.IsAssignableFrom(mType) && type != mType);
以Image為例