thirdmotion/strangeioc — pull request #47 by WillzZz (2013-11-08 23:35:06+00:00)
Title: Implicit bindings

I've added several tags:

[DefaultImpl]
[ImplementedBy]
[CrossContextComponent]
[Mediated]
[Mediates]

Any context which extends CrossContext (Unsure where to put this code currently. Let's discuss!) has access to a new method: ScanForAnnotatedClasses(string[] namespaces) where namespaces is a string array we will search our exported types. It uses StartsWith, so keep that in mind when creating or altering namespaces.

Use whatever suits you, but a recommended namespace structure is as follows:

(Company.)Project.Client.Services.ContextName.FeatureName
Project.Client.Services.Shared

One step at a time:
Company is optional, we don't use it in-house.
Client is to differentiate our Client and Server code.
Views is plural due to VS becoming confused if you have a namespace identical to a Class type (e.g. View)
ContextName is to allow us to segregate based on our Contexts, which is critical if you have multiple contexts, as we do in-house.
FeatureName is whatever feature your'e working on, just for organizational purposes.

The bottom example is just to clarify that shared packages need to be in their own package at the 'ContextName' level.

But for now, time for code review! Yay!

PS As we have 3.5 still at least for a few weeks, I was unable to test the Mediated/Mediates tags. Let's discuss that, too, but I'm essentially begging you to do my work for me :)