Uploaded image for project: 'Chemistry'
  1. Chemistry
  2. CMIS-936

The public API should be declared virtual

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: DotCMIS 0.6, DotCMIS 0.7
    • Fix Version/s: DotCMIS 0.7
    • Component/s: dotcmis
    • Labels:
      None
    • Environment:

      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".

        Attachments

        1. virtual-public-api.patch
          46 kB
          Patrice Collardez

          Activity

            People

            • Assignee:
              fmui Florian Müller
              Reporter:
              pcollardez Patrice Collardez
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: