Example #1
0
 void IBindingConstraintHandler.CheckBinding(object sender, BindingConstraintEventArgs e)
 {
     if (e.QueryType == typeof(Core.Modules.IModuleController <WebCoreModule>))
     {
         e.SetFailed("Запрещено привязывать контроллеры к модулю ядра.");
     }
 }
        void IBindingConstraintHandler.CheckBinding(object sender, BindingConstraintEventArgs e)
        {
            if (typeof(ModuleCore).IsAssignableFrom(e.QueryType) && !typeof(ModuleCore).IsAssignableFrom(e.QueryType))
            {
                e.SetFailed($"Ядро приложения поддерживает только модули, наследующиеся от '{typeof(ModuleCore).FullName}'.");
                return;
            }

            if (typeof(ModuleCore).IsAssignableFrom(e.QueryType))
            {
                var moduleCoreAttribute = e.QueryType.GetCustomAttribute <ModuleCoreAttribute>();
                if (moduleCoreAttribute == null)
                {
                    e.SetFailed($"Тип, наследующий от '{typeof(ModuleCore).FullName}', считается модулем и должен обладать атрибутом '{typeof(ModuleCoreAttribute).FullName}'.");
                    return;
                }
            }
        }