Over 2 years ago when I got intreduced to C# 2.0 and generics I wrote an Extensibility Application Block. The simple usage looks like this:
IExtensibleHost host = new SingleAppDomainHost();
IExtensibleTypeLoader loader = new AssemblyTypeLoader(System.Reflection.Assembly.GetEntryAssembly());