<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-01-11 17:12 GMT-03:00 silvioprog <span dir="ltr"><<a href="mailto:silvioprog@gmail.com" target="_blank">silvioprog@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Mon, Jan 5, 2015 at 5:07 PM, luiz americo pereira camara <span dir="ltr"><<a href="mailto:luizmed@oi.com.br" target="_blank">luizmed@oi.com.br</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>I created a IoC Container that can be found at <a href="https://code.google.com/p/luipack/source/browse/trunk/luicomponents/luiioccontainer.pas" target="_blank">https://code.google.com/p/luipack/source/browse/trunk/luicomponents/luiioccontainer.pas</a> . It has no dependencies.<br></div></div></div></blockquote><div><br></div></span><div>Awesome!</div></div></div></div></blockquote><div><br></div><div>Thanks. <br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div></div>With it is possible to implement Service Locator and Property Injection patterns. Constructor Injection is not possible due to lacking of Extended RTTI support in fpc.<br></div></div></blockquote><div><br></div></span><div>Can you send a small (and isolated) sample showing how to use it?</div></div></div></div></blockquote><div><br>There's a demo in demos/ioccontainer folder<br><br></div><div>In a real project, in the app start, i do:<br><br>  FPresentations := TPresentationManager.Create(Self);<br>  Services.Register(IPresentationManager, FPresentations);<br><br></div><div>When i need the service i do:<br><br>  FPresentations := IPresentationManager(Services.Resolve(IPresentationManager));<br><br></div><div>The global, nor the actual implementation is exposed, making easier to test.<br></div><div>There's still a dependency to the container (Services), this is the whole point of criticism to service locator pattern. <br>In the other side there always be a place where the dependency is set, even in other DI patterns.<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>BTW: Custom Attributes support would help to have a nicer Property Injection implementation</div></div></blockquote><div><br></div></span><div>I've plan to use something like this (CDI inspirations: <a href="http://cdi-spec.org" target="_blank">http://cdi-spec.org</a>):</div><div><br></div></div></div></div></blockquote><div><br></div></div>Seems a full ORM plus a MVC like framework.<br><br></div><div class="gmail_extra">I'm more modest. I use these classes to make modular code thus a bit more maintanable.<br></div><div class="gmail_extra"><br>All in all i use the IoC container little, in my project i register only two interfaces. In other places, i configure the dependency manually<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Luiz<br></div></div>