Invest in people before investing in tools

Il blog di Matteo Baglini
posts - 118, comments - 95, trackbacks - 697

[Spring.NET #30] Spring.Core, Definire oggetti tramite ObjectDefinitionBuilder fluent interface

Spring.NET grazie alla classe ObjectDefinitionBuilder espone delle flunt interface API che permettono di definire oggetti da registrare nell' ApplicationContext. Per mostrare questa funzionalità non documentata replicherò l'esempio mostrato nel post [Spring.NET #14] Spring.Core, IoC e DI (Setter Injection) :

   1: using System;
   2: using Spring.Context.Support;
   3: using Spring.Objects.Factory.Support;
   4:  
   5: namespace SpringSeries.Core.ObjectDefinitionBuilderFluentInterface
   6: {
   7:     class Program
   8:     {
   9:         static void Main(string[] args)
  10:         {
  11:             GenericApplicationContext _ctx = new GenericApplicationContext();
  12:  
  13:             _ctx.RegisterObjectDefinition("EngTranslator", ObjectDefinitionBuilder
  14:                                         .RootObjectDefinition(new DefaultObjectDefinitionFactory(), typeof(EnglishToItalianTranslator))
  15:                                         .SetSingleton(true)
  16:                                         .ObjectDefinition);
  17:  
  18:             _ctx.RegisterObjectDefinition("SpaTranslator", ObjectDefinitionBuilder
  19:                                         .RootObjectDefinition(new DefaultObjectDefinitionFactory(), typeof(SpanishToItalianTranslator))
  20:                                         .SetSingleton(true)
  21:                                         .ObjectDefinition);
  22:  
  23:             _ctx.RegisterObjectDefinition("ConsoleLog", ObjectDefinitionBuilder
  24:                                         .RootObjectDefinition(new DefaultObjectDefinitionFactory(), typeof(ConsoleTranslatorLog))
  25:                                         .SetSingleton(true)
  26:                                         .ObjectDefinition);
  27:  
  28:  
  29:             _ctx.RegisterObjectDefinition("Translator", ObjectDefinitionBuilder
  30:                                         .RootObjectDefinition(new DefaultObjectDefinitionFactory(), typeof(PhraseTranslator))
  31:                                         .AddConstructorArgReference("EngTranslator")
  32:                                         .AddPropertyReference("Log","ConsoleLog")
  33:                                         .SetSingleton(true)
  34:                                         .ObjectDefinition);
  35:  
  36:             PhraseTranslator _translator = (PhraseTranslator)_ctx.GetObject("Translator");
  37:             Console.WriteLine(_translator.Translate("Hello Spring.NET !!"));
  38:             Console.WriteLine(_translator.Translate("Hola Spring.NET !!"));
  39:             Console.Read();
  40:         }
  41:     }
  42: }

L'esempio è abbastanza autoesplicativo, come prima cosa creo un ApllicationContext vuoto grazie alla classe GenericApplicationContext, in seguito registro la definizione degli oggetti tramite il metodo RegisterObjectDefinition, il quale accetta due parametri, l'identificativo di tipo stringa ed un'istanza di IObjectDefinition. Per ottenere le varie istanze di IObjectDefinition utilizziamo la classe ObjectDefinitionBuilder.

Technorati Tag:

Print | posted on mercoledì 12 marzo 2008 02:51 | Filed Under [ .NET OpenSource Spring.NET ]

Powered by:
Powered By Subtext Powered By ASP.NET