/// <inheritdoc/> protected override void Process(TypeRegistry registry, TypeRegistration registration, Type type) { if (type == null || registry.Contains(type)) { return; } if (!DomainTypeRegistry.IsInterestingType(type)) { return; } // The type is interesting; // If it is a persistent type, let's register all its bases if (DomainTypeRegistry.IsPersistentType(type)) { Process(registry, registration, type.BaseType); } Type[] interfaces = type.FindInterfaces( (_type, filterCriteria) => DomainTypeRegistry.IsPersistentType(_type), type); for (int index = 0; index < interfaces.Length; index++) { Process(registry, registration, interfaces[index]); } // Final registration base.Process(registry, registration, type); }