protected virtual void TryRegisterType(IEngineConfiguration configuration, Type configType)
        {
            var configuredType = configuration.GetRegisteredType(configType);

            if (configuredType == null)
            {
                configuration.RegisterType(configType);
                configuredType = configuration.GetRegisteredType(configType);
            }

            foreach (var interfaceType in configType.GetInterfaces())
            {
                TryRegisterType(configuration, interfaceType);
            }

            Type baseType = configType.BaseType;

            if (baseType != null)
            {
                TryRegisterType(configuration, baseType);
            }
        }
        protected virtual void TryRegisterType(IEngineConfiguration configuration, Type configType)
        {
            IEngineConfigurationType configuredType = configuration.GetRegisteredType(configType);
            if (configuredType == null)
            {
                configuration.RegisterType(configType);
                configuredType = configuration.GetRegisteredType(configType);
            }

            foreach (Type interfaceType in configType.GetInterfaces())
            {
                TryRegisterType(configuration, interfaceType);
            }

            Type baseType = configType.BaseType;
            if (baseType != null)
            {
                TryRegisterType(configuration, baseType);
            }
        }