private void FillDisconnectedNodes() { List <Assembly> newAssemblies = AppDomain.CurrentDomain.GetAssemblies() .Where(a => !a.IsDynamic) .Where(a => !_scannedAssemblies.Contains(a.FullName)) .ToList(); IEnumerable <Assembly> referencingCore = newAssemblies .Where(a => a.GetReferencedAssemblies().Any(an => an.FullName == _aowClassAssemblyName)); foreach (Assembly assembly in referencingCore) { foreach (TypeInfo type in assembly.DefinedTypes) { AowClassAttribute aowClass = type.GetCustomAttribute <AowClassAttribute>(); if (aowClass != null) { InheritanceNode disconnectedNode = new InheritanceNode(type, aowClass); _disconnectedNodes.TryAdd(disconnectedNode.Type, disconnectedNode); } } } foreach (Assembly assembly in newAssemblies) { _scannedAssemblies.Add(assembly.FullName); } }
public InheritanceNode(Type type, AowClassAttribute aowClass) : this() { Type = type; if (aowClass.ID != AowClassAttribute.AbstractID) { ClassID = aowClass.ID; } }
public bool IsSupported(Type type) { AowClassAttribute classAttr = type.GetCustomAttribute <AowClassAttribute>(inherit: false); return(classAttr != null); }