Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
DotCMIS 0.6, DotCMIS 0.7
-
None
-
Windows 7, DotNet 3.5
Description
The public API of DotCMIS is not completely declared virtual, and it prevents the polymorphism to work as expected, especially when creating a new ObjectFactory and specialized objects.
Long explanation:
With Java, every method is implicitly declared virtual, therefore overriding a method in a subclass is as simple as a redeclaration and the polymorphism works as intended whatever the cast of the subclass to any of its parent class or interface.
With C#, every method is not declared virtual, therefore redeclaring a method in a subclass does not make the polymorphism works: the first declaration of the method is used considering the cast level in the inheritance graph.
In order to have the same behavior with C# as the one we have with Java, every method should be declared "virtual" and every redeclaration should be declared "override".