Each Loupe extension is defined by exactly one Extension Definition class. The definition class defines all of the other types that are part of the extension: When the extension is loaded the definition class is created and asked to initialize. During this method it can define all of the other types that it wants to have loaded for the various views, commands, configuration, and other capabilities.
To be loaded as an extension definition, create a class that:
In the Register Method you have to register all of the different types that implement your extension. Then, the extension definition class is released. If you want to have a common object that is always running implement a controller. These are associated with a given repository or session.