39935552a3
Since extension methods don't play well with pythonnet, this change converts the extensions class into a decorator class. Additionally, this ObjectStore type is the type that gets exposed via QCAlgorithm so users can access these methods directly without requiring the use of extension methods. This approach has many good properties. For one, it doesn't force implementors of IObjectStore to use a base class. Second, it maintains healthy separation of API level concerns (such as convenient methods) from the abstraction level conerns of IObjectStore. Setting it up in this way ensures ANY implementation of IObjectStore will still get access to these additional methods. Another thing to note is this prevents using a base class on QCAlgorithm's public interface. Instead, we have a specific type that is dedicated to fulfilling API level requirements, which also provides us flexibility in the event the API needs to be updated. If it were a subclass, you run the risk of breaking the implementors of the subclass.