Spring.AutoRegistration: Fluent Configuration for Spring .NET
Autor: Rafael | Publicado: 2012-12-17T23:25:00-03:00


Spring.AutoRegistration is Fluent registration for Spring .NET, that I ported, inspired by the Unity AutoRegistration.




Here are some examples:

Scans all assemblies that the starts with Spring.AutoRegistration.Test:


var&nbsp;context&nbsp;=&nbsp;new&nbsp;GenericApplicationContext();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Configure()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.IncludeAssembly(x&nbsp;=&gt;&nbsp;x.FullName.StartsWith("Spring.AutoRegistration.Test"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Include(x&nbsp;=&gt;&nbsp;x.ImplementsITypeName(),&nbsp;Then.Register())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ApplyAutoRegistration();


Registers instances as singleton. You may also use the UsingPrototype method.

var&nbsp;context&nbsp;=&nbsp;new&nbsp;GenericApplicationContext();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Configure()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.IncludeAssembly(x&nbsp;=&gt;&nbsp;x.FullName.StartsWith("Spring.AutoRegistration.Test"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Include(x&nbsp;=&gt;&nbsp;x.ImplementsITypeName(),&nbsp;Then.Register().UsingSingleton())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ApplyAutoRegistration();


Injects properties using InjectAttribute:

var&nbsp;context&nbsp;=&nbsp;new&nbsp;GenericApplicationContext();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Configure()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.IncludeAssembly(x&nbsp;=&gt;&nbsp;x.FullName.StartsWith("Spring.AutoRegistration.Test"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Include(x&nbsp;=&gt;&nbsp;x.ImplementsITypeName(),&nbsp;Then.Register().UsingSingleton()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .InjectByProperty(If.DecoratedWith&lt;InjectAttribute&gt;))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ApplyAutoRegistration();


Mixing with XML:

var&nbsp;context&nbsp;=&nbsp;new&nbsp;XmlApplicationContext( "assembly://Spring.AutoRegistration.Test/
      Spring.AutoRegistration.Test/SpringObjectsSimple.xml");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.Configure()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.IncludeAssembly(x&nbsp;=&gt;&nbsp;x.FullName.StartsWith("Spring.AutoRegistration.Test"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Include(x&nbsp;=&gt;&nbsp;x.ImplementsITypeName(),&nbsp;Then.Register().UsingSingleton())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ApplyAutoRegistration();


Using the NamedAttribute and InjectAttribute:

&nbsp;&nbsp;&nbsp; //&nbsp;uses&nbsp;the&nbsp;type&nbsp;name
&nbsp;&nbsp;&nbsp; public&nbsp;class&nbsp;GrayImagePlugin&nbsp;:&nbsp;IImagePlugin
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp; }
&nbsp;
    [Named("Resize")]
&nbsp;&nbsp;&nbsp; public&nbsp;class&nbsp;ResizeImagePlugin&nbsp;:&nbsp;IImagePlugin
&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;
    }
&nbsp;
 &nbsp;&nbsp; public&nbsp;class&nbsp;PluginExecutor&nbsp;:&nbsp;IPluginExecutor
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Inject]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;IImagePlugin&nbsp;GrayImagePlugin&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Inject]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;IImagePlugin&nbsp;Resize&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
    }&nbsp; &nbsp;
&nbsp;&nbsp;&nbsp;  

Let me know about issues, bugs and suggestions using the Spring.AutoRegistration.