<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>OpenNETCF.IoC Framework</title><link>http://ioc.codeplex.com/project/feeds/rss</link><description>A lightweight managed IoC &amp;#40;Inversion of Control&amp;#41; and DI &amp;#40;Dependency Injection&amp;#41; framework designed for the .NET .Compact Framework but the full framework is supported as well.  It supports Registration, construction and even event aggregation in a tiny and wicked fast package.      This framework is patterned after Microsoft&amp;#39;s SCSF object model, but actually built with device memory and processor constraints in mind.</description><item><title>Closed Issue: Feature Request: Add non-XML-based (preferrably fluent) Dynamic Registration interface [2758]</title><link>http://ioc.codeplex.com/workitem/2758</link><description>We need to add some mechanism to make programmatic registration of modules easier.  One that doesn&amp;#39;t require XML, and preferrably fluent &amp;#40;since that seems to be the way everyone else is migrating&amp;#41;.&lt;br /&gt;Comments: Change set 71475 added GetModuleAssemblies to the IModuleInfoStore interface.  You can now return an array of assemblies here and they will get inspected for modules and loaded.  It's not fluent, but it's an alternative to XML.</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:45:10 GMT</pubDate><guid isPermaLink="false">Closed Issue: Feature Request: Add non-XML-based (preferrably fluent) Dynamic Registration interface [2758] 20130325024510P</guid></item><item><title>Closed Feature: Feature Request: IModule loading without UI [6870]</title><link>http://ioc.codeplex.com/workitem/6870</link><description>Right now the ModuleInfoStoreService &amp;#40;the thing that loads IModules - which are essentially plug-ins&amp;#41; is tied to the SmartClientApplication, which in turn required WinForms.  IModules shouldn&amp;#39;t be tied to UI requirements first, becasue it&amp;#39;s bad form, but also becasue it makes it so you can&amp;#39;t reasonably use the IModule loading feature on platforms like Mono where WinForms don&amp;#39;t exist.&lt;br /&gt;&amp;#160;&lt;br /&gt;Extract the IModule loading system out of the UI assembly and down into IoC.  Make it no UI dependent.  Keep it performant, or better yet, make it faster.  Maintain existing compatibility.&lt;br /&gt;Comments: This is fixed, though I don't recall exactly when I fixed it.  The latest change set (71475) definitely has it.</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:43:16 GMT</pubDate><guid isPermaLink="false">Closed Feature: Feature Request: IModule loading without UI [6870] 20130325024316P</guid></item><item><title>Closed Issue: Feature: Allow loading module assemblies without XML [7372]</title><link>http://ioc.codeplex.com/workitem/7372</link><description>In some cases I&amp;#39;d like to be able to load assemblies with my own logic, rather than from XML.  Being able to just load the Assemblies myself and passing them into the IoC framework for Module inspection would be useful.&lt;br /&gt;Comments: Implemented in change set 71475</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:41:47 GMT</pubDate><guid isPermaLink="false">Closed Issue: Feature: Allow loading module assemblies without XML [7372] 20130325024147P</guid></item><item><title>Closed Feature: Feature: Access to the Shell Form in SmartClientApplication [7371]</title><link>http://ioc.codeplex.com/workitem/7371</link><description>If I create a typical IoC.UI SmartClientApplication, the shell form is created for me based on a generic type reference.  That&amp;#39;s great.  But it&amp;#39;s causing me a problem with app shutdown.  &lt;br /&gt;&lt;br /&gt;Right now I have an app that hides the OS taskbar &amp;#40;CE&amp;#41; on startup.  On shutdown, I&amp;#39;d like it to show it again.  My Form shell form hides the Task Bar in the constructor and there&amp;#39;s code to re-show it in the Dispose method, but Dispose is never getting called - I think the runtime exits before that can happen.&lt;br /&gt;&lt;br /&gt;What I need is access to the shell form&amp;#39;s instance up in the SmartClientApplication so I can call in and re-show the task bar after Start method exits.&lt;br /&gt;Comments: Implemented in change set 71475</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:41:23 GMT</pubDate><guid isPermaLink="false">Closed Feature: Feature: Access to the Shell Form in SmartClientApplication [7371] 20130325024123P</guid></item><item><title>Source code checked in, #71475</title><link>http://ioc.codeplex.com/SourceControl/changeset/changes/71475</link><description>- Added explicit call to shell form&amp;#39;s Dispose in SmartClientApplication shutdown&amp;#13;&amp;#10;- Added virtual OnApplicationClose method to SmartClientApplication&amp;#60;T&amp;#62;&amp;#13;&amp;#10;- Added GetModuleAssemblies method to the IModuleInfoStore interface</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:40:04 GMT</pubDate><guid isPermaLink="false">Source code checked in, #71475 20130325024004P</guid></item><item><title>Created Issue: Feature: Allow loading module assemblies without XML [7372]</title><link>http://ioc.codeplex.com/workitem/7372</link><description>In some cases I&amp;#39;d like to be able to load assemblies with my own logic, rather than from XML.  Being able to just load the Assemblies myself and passing them into the IoC framework for Module inspection would be useful.&lt;br /&gt;</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:38:02 GMT</pubDate><guid isPermaLink="false">Created Issue: Feature: Allow loading module assemblies without XML [7372] 20130325023802P</guid></item><item><title>Commented Feature: Feature: Access to the Shell Form in SmartClientApplication [7371]</title><link>http://ioc.codeplex.com/workitem/7371</link><description>If I create a typical IoC.UI SmartClientApplication, the shell form is created for me based on a generic type reference.  That&amp;#39;s great.  But it&amp;#39;s causing me a problem with app shutdown.  &lt;br /&gt;&lt;br /&gt;Right now I have an app that hides the OS taskbar &amp;#40;CE&amp;#41; on startup.  On shutdown, I&amp;#39;d like it to show it again.  My Form shell form hides the Task Bar in the constructor and there&amp;#39;s code to re-show it in the Dispose method, but Dispose is never getting called - I think the runtime exits before that can happen.&lt;br /&gt;&lt;br /&gt;What I need is access to the shell form&amp;#39;s instance up in the SmartClientApplication so I can call in and re-show the task bar after Start method exits.&lt;br /&gt;Comments: ** Comment from web user: ctacke ** &lt;p&gt;Oh, and maybe explicitly Disposing the shell for before exiting would be a good thing as well.&lt;/p&gt;</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:30:38 GMT</pubDate><guid isPermaLink="false">Commented Feature: Feature: Access to the Shell Form in SmartClientApplication [7371] 20130325023038P</guid></item><item><title>Created Feature: Feature: Access to the Shell Form in SmartClientApplication [7371]</title><link>http://ioc.codeplex.com/workitem/7371</link><description>If I create a typical IoC.UI SmartClientApplication, the shell form is created for me based on a generic type reference.  That&amp;#39;s great.  But it&amp;#39;s causing me a problem with app shutdown.  &lt;br /&gt;&lt;br /&gt;Right now I have an app that hides the OS taskbar &amp;#40;CE&amp;#41; on startup.  On shutdown, I&amp;#39;d like it to show it again.  My Form shell form hides the Task Bar in the constructor and there&amp;#39;s code to re-show it in the Dispose method, but Dispose is never getting called - I think the runtime exits before that can happen.&lt;br /&gt;&lt;br /&gt;What I need is access to the shell form&amp;#39;s instance up in the SmartClientApplication so I can call in and re-show the task bar after Start method exits.&lt;br /&gt;</description><author>ctacke</author><pubDate>Mon, 25 Mar 2013 14:29:59 GMT</pubDate><guid isPermaLink="false">Created Feature: Feature: Access to the Shell Form in SmartClientApplication [7371] 20130325022959P</guid></item><item><title>Created Feature: Feature Request: Load Modules by Assembly [7326]</title><link>http://ioc.codeplex.com/workitem/7326</link><description>Currently the IModuleInfoStore uses XML to define what Modules get loaded.  This isn&amp;#39;t terribly friendly, especially for platforms like Android.  It would be nice if I could just pass back an array of Assemblies that my InfoStore loaded and have IoC scan that for IModules to load.&lt;br /&gt;</description><author>ctacke</author><pubDate>Wed, 20 Feb 2013 02:17:45 GMT</pubDate><guid isPermaLink="false">Created Feature: Feature Request: Load Modules by Assembly [7326] 20130220021745A</guid></item><item><title>Created Feature: Feature Request: Add usage analytics/metrics [7267]</title><link>http://ioc.codeplex.com/workitem/7267</link><description>If your app is using IoC, then a lot of calls get funneled through some very discrete points in the code.  It might be useful and interesting to add at least some basic counters to help developers profile application usage.  For example, keeping a running count of SmartPart activations could tell a developer the relative &amp;#38;quot&amp;#59;popularity&amp;#38;quot&amp;#59; of a given View.  keeping a count of service resolutions by type could likewise indicate which services are most used.  This wouldn&amp;#39;t take the place of full app instrumentation, but it could provide some simple, easy data to help developers decide where efforts are best spent.&lt;br /&gt;</description><author>ctacke</author><pubDate>Wed, 16 Jan 2013 14:31:11 GMT</pubDate><guid isPermaLink="false">Created Feature: Feature Request: Add usage analytics/metrics [7267] 20130116023111P</guid></item><item><title>Closed Issue: Automatic textbox focus on loading [7137]</title><link>http://ioc.codeplex.com/workitem/7137</link><description>I would like for my SmartPart to have it&amp;#39;s first textbox focused on when it loads.  I have the below code in the OnActivated&amp;#40;&amp;#41; method of my SmartPart&amp;#58;&lt;br /&gt;&lt;br /&gt;    public override void OnActivated&amp;#40;&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;        base.OnActivated&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        txtUserName.Focus&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;    &amp;#125;&lt;br /&gt;&lt;br /&gt;However, after the workspace.Show method is called by the DeckWorkspace, the textbox is not focused.&lt;br /&gt;&lt;br /&gt;I can make a sub-classes of the DeckWorkspace and SmartPart with auto-focus methods added, but is there a way that doesn&amp;#39;t use new classes&amp;#63;&lt;br /&gt;Comments: Fixed with latest change set</description><author>ctacke</author><pubDate>Tue, 15 Jan 2013 15:10:19 GMT</pubDate><guid isPermaLink="false">Closed Issue: Automatic textbox focus on loading [7137] 20130115031019P</guid></item><item><title>Commented Issue: Automatic textbox focus on loading [7137]</title><link>http://ioc.codeplex.com/workitem/7137</link><description>I would like for my SmartPart to have it&amp;#39;s first textbox focused on when it loads.  I have the below code in the OnActivated&amp;#40;&amp;#41; method of my SmartPart&amp;#58;&lt;br /&gt;&lt;br /&gt;    public override void OnActivated&amp;#40;&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;        base.OnActivated&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        txtUserName.Focus&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;    &amp;#125;&lt;br /&gt;&lt;br /&gt;However, after the workspace.Show method is called by the DeckWorkspace, the textbox is not focused.&lt;br /&gt;&lt;br /&gt;I can make a sub-classes of the DeckWorkspace and SmartPart with auto-focus methods added, but is there a way that doesn&amp;#39;t use new classes&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: ctacke ** &lt;p&gt;It turns out that the CF has a different behavior than the desktop.  A Form's Visibility doesn't change until after the ctor has run.  Well a control's visibility cannot be set to true if it's containers are not visible, and things like SetFocus are ignored if a control is not visible.  The end result is that on the first creation of the Form, SetFocus was failing - for every time after that (when just showing and hiding) it was working fine.&lt;/p&gt;&lt;p&gt;The net result is that I've fixed the issue, though if you try to start a Form hidden, it now might interrupt that process.  We'll see if anyone flags that as a problem.&lt;/p&gt;</description><author>ctacke</author><pubDate>Tue, 15 Jan 2013 15:09:55 GMT</pubDate><guid isPermaLink="false">Commented Issue: Automatic textbox focus on loading [7137] 20130115030955P</guid></item><item><title>Source code checked in, #71035</title><link>http://ioc.codeplex.com/SourceControl/changeset/changes/71035</link><description>Workaround for CF-specific visibility on startup issue</description><author>ctacke</author><pubDate>Tue, 15 Jan 2013 15:04:52 GMT</pubDate><guid isPermaLink="false">Source code checked in, #71035 20130115030452P</guid></item><item><title>Commented Issue: Automatic textbox focus on loading [7137]</title><link>http://ioc.codeplex.com/workitem/7137</link><description>&amp;#60;p&amp;#62;I would like for my SmartPart to have it&amp;#39;s first textbox focused on when it loads.  I have the below code in the OnActivated&amp;#40;&amp;#41; method of my SmartPart&amp;#58;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;&amp;#35;160&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;public override void OnActivated&amp;#40;&amp;#41;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#123;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;            base.OnActivated&amp;#40;&amp;#41;&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;            txtUserName.Focus&amp;#40;&amp;#41;&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#125;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;&amp;#35;160&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;However, after the workspace.Show method is called by the DeckWorkspace, the textbox is not focused.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;&amp;#35;160&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;I can make a sub-classes of the DeckWorkspace and SmartPart with auto-focus methods added, but is there a way that doesn&amp;#39;t use new classes&amp;#63;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;Comments: ** Comment from web user: pbond ** &lt;p&gt;I can reproduce issue on WorkspaceDisposal sample (Compact Framework on Pocket PC 2003 emulator)&lt;/p&gt;&lt;p&gt;Issue also reproducible on real Windows CE devices &lt;/p&gt;&lt;p&gt;```&lt;br&gt;//Constructor&lt;br&gt;deckWorkspace1.Add(view); // &lt;br&gt;view.Show(); // OnActivated event occurs , but textbox control is not focused &lt;/p&gt;&lt;p&gt;// Button event handler&lt;br&gt;view.Hide(); //&lt;br&gt;view.Show();  //  text box control is focused &lt;/p&gt;&lt;p&gt;```&lt;/p&gt;</description><author>pbond</author><pubDate>Mon, 14 Jan 2013 21:22:20 GMT</pubDate><guid isPermaLink="false">Commented Issue: Automatic textbox focus on loading [7137] 20130114092220P</guid></item><item><title>Commented Issue: Automatic textbox focus on loading [7137]</title><link>http://ioc.codeplex.com/workitem/7137</link><description>&amp;#60;p&amp;#62;I would like for my SmartPart to have it&amp;#38;&amp;#35;39&amp;#59;s first textbox focused on when it loads.  I have the below code in the OnActivated&amp;#40;&amp;#41; method of my SmartPart&amp;#58;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;public override void OnActivated&amp;#40;&amp;#41;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#123;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;            base.OnActivated&amp;#40;&amp;#41;&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;            txtUserName.Focus&amp;#40;&amp;#41;&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#125;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;However, after the workspace.Show method is called by the DeckWorkspace, the textbox is not focused.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;I can make a sub-classes of the DeckWorkspace and SmartPart with auto-focus methods added, but is there a way that doesn&amp;#38;&amp;#35;39&amp;#59;t use new classes&amp;#63;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&lt;br /&gt;Comments: ** Comment from web user: pbond ** &lt;p&gt;I can reproduce issue on OpennetCF.IOC.CF&lt;/p&gt;</description><author>pbond</author><pubDate>Mon, 14 Jan 2013 11:55:30 GMT</pubDate><guid isPermaLink="false">Commented Issue: Automatic textbox focus on loading [7137] 20130114115530A</guid></item><item><title>Updated Wiki: Home</title><link>http://ioc.codeplex.com/wikipage?version=20</link><description>&lt;div class="wikidoc"&gt;The OpenNETCF.IoC Framework it is a public-domain-licensed (you can&amp;#39;t get any more free and unencumbered than that) framework written in C# (framework version 3.5) that provides both &lt;a href="http://martinfowler.com/articles/injection.html"&gt;inversion of control and dependency injection&lt;/a&gt; for applications running on any or all of the following platforms:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;.NET Compact Framework 2.0 or 3.5&lt;/li&gt;
&lt;li&gt;.NET Framework 3.5 or 4.0&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.opennetcf.com/ctacke/2010/08/02/OpenNETCFIoCNowSupportingWinPhone.aspx"&gt;Windows Phone 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xamarin.com/monoforandroid"&gt;Mono for Android (MonoDroid)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.opennetcf.com/ctacke/2010/10/29/AppleNETCFIoCAnIoCContainerForMonoTouch.aspx"&gt;iPhone/MonoTouch&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;It&amp;#39;s roughly modelled after &lt;a href="http://msdn.microsoft.com/en-us/library/aa480482.aspx"&gt;Microsoft&amp;#39;s SCSF&lt;/a&gt; and CAB frameworks, but it&amp;#39;s scaled down and optimized for running on mobile and embedded devices, plus I &amp;quot;fixed&amp;quot; stuff that I think the SCSF got wrong (like having a static, globally available RootWorkItem and the ability to insert IMessageFilters into the application&amp;#39;s message pump).&lt;br /&gt;&lt;br /&gt;This framework is in use in several commercial applications (both desktop and CF) already, so it&amp;#39;s been pretty heavily tested and vetted.  I still want to add a few more features as well and go back through it looking for performance optimizations, but it certainly has enough features to be used in applications today.&lt;br /&gt;&lt;br /&gt;This release also ships with a full-blown, real-world sample application, not just the typical &amp;quot;Northwind&amp;quot; type of application.  The sample is called WiFiSurvey and it can be used to survey WiFi AP coverage of a site and to monitor associated AP changes as well as network addressability of a device.&lt;br /&gt;&lt;br /&gt;WiFiSurvey has a Configuration service, a &lt;a href="http://www.microsoft.com/Sqlserver/2008/en/us/compact.aspx"&gt;SQL CE 3.5&lt;/a&gt;-backed Data Access Layer, an Infrastructure module and a an application shell all of which are fully decoupled from one another and that are all loaded dynamically using an XML definition file.  The shell makes use of both a DeckWorkspace and a TabWorkspace, showing you not just how to use them, but also how to create your own workspaces if need be.&lt;br /&gt;&lt;br /&gt;The WiFiSurvey application has a single source base for all target platforms and has been tested on the following platforms:&lt;br /&gt;&lt;br /&gt;ARM-based CE 6.0 with a 320x240 (landscape) display. &lt;br /&gt;Pocket PC 2003 240x320 (portrait) &lt;br /&gt;WinMo 5.0 240x320 (portrait and landscape)&lt;br /&gt;The IoC framework has additionally been tested on x86-based CE 5.0 and CE 6.0 devices.&lt;br /&gt;&lt;br /&gt;As a side note, the WiFiSurvey sample application is also a good example of using the OpenNETCF &lt;a href="http://www.opennetcf.com/Products/SmartDeviceFramework/tabid/65/Default.aspx"&gt;Smart Device Framework&lt;/a&gt; for getting wireless information.&lt;br /&gt;
&lt;h2&gt;&lt;b&gt;&lt;u&gt;The Basics&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;&lt;a href="http://ioc.codeplex.com/wikipage?title=Dependency%20Injection&amp;referringTitle=Home"&gt;Dependency Injection&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ioc.codeplex.com/wikipage?title=Event%20Aggregation&amp;referringTitle=Home"&gt;Event Aggregation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ioc.codeplex.com/wikipage?title=Model-View-Presenter%2fController%20Features&amp;referringTitle=Home"&gt;Model-View-Presenter&amp;#47;Controller Features&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;&lt;b&gt;&lt;u&gt;Tutorials&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.opennetcf.com/ctacke/2009/03/09/InversionOfControlAndTheCompactFrameworkPartI.aspx"&gt;Introduction to IoC and the Compact Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.opennetcf.com/ctacke/2009/03/10/TheOpenNETCFIoCFrameworkItemsAndServices.aspx"&gt;The OpenNETCF.IoC Framework: Items and Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.opennetcf.com/ctacke/2009/03/11/PartIIITheOpenNETCFIoCFrameworkEvents.aspx"&gt;The OpenNETCF.IoC Framework: Events&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&lt;b&gt;&lt;u&gt;Performance&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;The OpenNETCF IoC Framework, for Singleton registration and resolution anyway, outperforms other popular IoC frameworks such as Ninject, Unity, Castle Windsor, Structure Map and AutoFac.  For a brief overview of the performance differences, see the following blog entry:
&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.opennetcf.com/ctacke/2011/04/29/BenchmarkingOpenNETCFsIoCFramework.aspx"&gt;Benchmarking OpenNETCF&amp;#39;s IoC Framework&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&lt;b&gt;&lt;u&gt;Common Service Locator Adapter&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;As of version 1.0.9280, we also support an adapter for the Microsoft Patterns and Practices team&amp;#39;s &lt;a href="http://commonservicelocator.codeplex.com"&gt;CommonServiceLocator project&lt;/a&gt;.&lt;br /&gt;Download the adapter and tests for it over on the Downloads page.&lt;br /&gt;
&lt;h2&gt;&lt;b&gt;&lt;u&gt;Usage examples&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;We understand that we need to document the library better.  One of the pitfalls of creating open source projects is that there are often more questions than the developers can answer and we have to decide whether time is better spent adding features or documenting.  As an attempt to provide some developer help, below are links to real-world applications (where the source code is available) that use IoC that may be useful as implementation examples.
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mtcagent.codeplex.com"&gt;OpenNETCF MTConnect VirtualAgent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://orm.codeplex.com"&gt;OpenNETCF ORM&lt;/a&gt; - the desktop source includes an Entity Generator which is a wizard-based application that uses IoC&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ctacke</author><pubDate>Wed, 19 Dec 2012 14:47:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121219024749P</guid></item><item><title>Source code checked in, #70819</title><link>http://ioc.codeplex.com/SourceControl/changeset/changes/70819</link><description>Support added for CF 2.0</description><author>ctacke</author><pubDate>Wed, 19 Dec 2012 00:10:18 GMT</pubDate><guid isPermaLink="false">Source code checked in, #70819 20121219121018A</guid></item><item><title>New Post: At Workspace Add method, SmartPart added to RootWorkItem.SmartParts already exist</title><link>http://ioc.codeplex.com/discussions/403175</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Thanks for the report.&amp;nbsp; I've included this fix in my latest check-in (earlier today).&lt;/p&gt;
&lt;/div&gt;</description><author>ctacke</author><pubDate>Mon, 19 Nov 2012 18:50:08 GMT</pubDate><guid isPermaLink="false">New Post: At Workspace Add method, SmartPart added to RootWorkItem.SmartParts already exist 20121119065008P</guid></item><item><title>Source code checked in, #70599</title><link>http://ioc.codeplex.com/SourceControl/changeset/changes/70599</link><description>- Bug fix in Workspace &amp;#40;re-adding controls caused collision&amp;#41;&amp;#13;&amp;#10;- ShellReplacement is no longer abstract &amp;#40;broke Forms designer&amp;#41;</description><author>ctacke</author><pubDate>Mon, 19 Nov 2012 16:11:50 GMT</pubDate><guid isPermaLink="false">Source code checked in, #70599 20121119041150P</guid></item><item><title>New Post: At Workspace Add method, SmartPart added to RootWorkItem.SmartParts already exist</title><link>http://ioc.codeplex.com/discussions/403175</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;public void ShowControl()&lt;br&gt;
{&lt;br&gt;
// get smartpart from container&lt;br&gt;
var existingPart = RootWorkItem.SmartParts[&amp;quot;MySmartPart&amp;quot;];&lt;br&gt;
&lt;br&gt;
// if we called &amp;quot;Close&amp;quot; on the SmartPart, it will no longer be in the collection&lt;br&gt;
if (existingPart == null)&lt;br&gt;
{ &lt;br&gt;
Debug.WriteLine(&amp;quot;Recreating 'MySmartPart'...&amp;quot;);&lt;/p&gt;
&lt;p&gt;// Addnew smartpart and ObjectFactory.DoInjections working&lt;br&gt;
existingPart = RootWorkItem.SmartParts.AddNew&amp;lt;UserControl1&amp;gt;(&amp;quot;MySmartPart&amp;quot;);&lt;br&gt;
existingPart.Name = &amp;quot;MySmartPart&amp;quot;;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
// Show it&lt;/p&gt;
&lt;p&gt;// WorkSpace Show -&amp;gt;OnShow -&amp;gt; Add -&amp;gt; RootWorkItem.SmartParts.Add and twice &amp;nbsp;ObjectFactory.DoInjections working&lt;/p&gt;
&lt;p&gt;// if there is a EventSubcription. Event invoke twice.&lt;br&gt;
RootWorkItem.Workspaces[WorkspaceNames.Main].Show(existingPart);&lt;br&gt;
&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;I Changed WorkSpace.cs&lt;/p&gt;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br&gt;
/// Adds a SmartPart to the Workspace without showing it&lt;br&gt;
/// &amp;lt;/summary&amp;gt;&lt;br&gt;
/// &amp;lt;param name=&amp;quot;smartPart&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br&gt;
public virtual void Add(ISmartPart smartPart)&lt;br&gt;
{&lt;br&gt;
if (smartPart == null) throw new ArgumentNullException(&amp;quot;smartPart&amp;quot;);&lt;br&gt;
&lt;br&gt;
this.InvokeIfRequired(d =&amp;gt;&lt;br&gt;
{&lt;br&gt;
var control = smartPart as Control;&lt;br&gt;
if (control == null) throw new ArgumentException(&amp;quot;smartPart must be a Control&amp;quot;);&lt;br&gt;
&lt;br&gt;
if (!SmartParts.Contains(smartPart))&lt;br&gt;
{&lt;br&gt;
smartPart.Workspace = this;&lt;br&gt;
m_smartParts.Add(smartPart);&lt;/p&gt;
&lt;p&gt;// I added if statement&lt;br&gt;
if (!RootWorkItem.SmartParts.ContainsObject(smartPart))&lt;br&gt;
RootWorkItem.SmartParts.Add(smartPart, Guid.NewGuid().ToString());&lt;br&gt;
this.Controls.Add(control);&lt;br&gt;
}&lt;br&gt;
});&lt;br&gt;
&amp;nbsp;}&lt;/p&gt;
&lt;/div&gt;</description><author>fduzceker</author><pubDate>Wed, 14 Nov 2012 14:37:35 GMT</pubDate><guid isPermaLink="false">New Post: At Workspace Add method, SmartPart added to RootWorkItem.SmartParts already exist 20121114023735P</guid></item></channel></rss>