Container hosted extensions seem to work now.
Interfaces are declared on the extensions using metadata, to prevent recursion.
Limit to Framework 4.5 for generic support.
Should probably split Interface declarations off into separate metadata class. If I can get the metadata in the right place. This is more explicite. Now you have to declare that your class implements a given interface instead of just implementing it.