Come posso associare un'interfaccia a una classe decisa da una configurazione xml o database all'avvio dell'applicazione?

1

Sto rielaborando la progettazione di un'applicazione esistente che viene costruita utilizzando WebForms. Attualmente il piano è di lavorarlo in un'applicazione con pattern MVP mentre si utilizza Ninject come contenitore IoC.

Il motivo per cui Ninject è presente è che il capo desiderava una certa flessibilità all'interno del sistema, in modo tale da poter creare un diverso sapore della logica aziendale nel modello e consentire al programmatore di scegliere quale utilizzare in base alla richiesta del cliente , tramite la configurazione XML o l'impostazione del database.

So che Ninject non ha bisogno della configurazione XML, tuttavia sono confuso su come possa aiutare a iniettare dinamicamente la dipendenza nel sistema?

Immagina di avere un'interfaccia IMember e ho bisogno di associare questa interfaccia alla classe decisa da una configurazione xml o database all'avvio dell'applicazione, come posso ottenerlo?

    
posta ipohfly 15.10.2012 - 10:29
fonte

1 risposta

1

Questo è praticamente spiegato in Ninject-wiki Ha questo esempio di eseguendo i singoli binding in base a qualche condizione:

class WeaponsModule : NinjectModule
{
   private readonly bool useMeleeWeapons;
   public WeaponsModule(bool useMeleeWeapons) {
      this.useMeleeWeapons = useMeleeWeapons;
   }

   public void Load()
   {
      if (this.useMeleeWeapons)
         Bind<IWeapon>().To<Sword>();
      else
         Bind<IWeapon>().To<Shuriken>();
   }
}

class Program
{
   public static void Main()
   {
       bool useMeleeWeapons = false;
       IKernel kernel = new StandardKernel(new WeaponsModule(useMeleeWeapons));
       Samurai warrior = kernel.Get<Samurai>();
       warrior.Attack("the evildoers");
   }
}

Se non hai bisogno di questa granularità, potresti avere diversi moduli che vengono caricati in base a qualche condizione.

    
risposta data 15.10.2012 - 10:58
fonte

Leggi altre domande sui tag