Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# Verständnisproblem bei der Impl. von Schnittstellen (https://www.delphipraxis.net/65127-verstaendnisproblem-bei-der-impl-von-schnittstellen.html)

Heffalump 12. Mär 2006 18:28


Verständnisproblem bei der Impl. von Schnittstellen
 
Hallo zusammen,

wieder einmal eine kleine Frage. Wie sieht die Umsetzung in C# aus? Das besondere an den folgenden Zeilen ist die Umsetzung von get_Item. Diese kommt sowohl in der Schnittstelle, als auch in der ererbten Klasse ArrayList vor. Um ein Verdecken der get_Item Funktion der ererbten Klasse ArrayList zu vermeiden, kann man im Pascal folgendes Konstrukt verwenden. Nur wie würde der C# Code aussehen.

Delphi-Quellcode:
TConnectionNodeList = class(ArrayList, IConnectionNodeList)
  private
  public
    constructor Create;
    function add(owner: System.Windows.Forms.Form; Name, Description: string): IConnectionNode; overload;

    //Umbau für die Schnittstelle
    function get_ItemHelper(index: integer): IConnectionNode;
    function IConnectionNodeList.get_Item=get_ItemHelper;

    function delete(owner: System.Windows.Forms.Form; Node: IConnectionNode): CCResult;
  end;

Elvis 13. Mär 2006 07:36

Re: Verständnisproblem bei der Impl. von Schnittstellen
 
Angenommen, du hast eine Klasse ConnectionNode, welche IConnectionNode implementiert.
Jetzt köntest du einfach eine List<ConnectionNode> nehmen und die Property von IConnectionNodeList explizit implementieren.
Code:
class ConnectionNodeList : List<ConnectionNode>, IConnectionNodeList
{
  IConnectionNode IConnectionNodeList.this[int index]
  {
    get{return this[index];}
  }
}
Im Gegensatz zu Delphi verlierst du diese Implementierung nicht in abgeleiteten Klassen.
Du kannst also problemlos das hier machen:
Code:
interface IConnectionNodeListAbleitung : IConnectionNodeList
{
  void DoSomething();
}

class ConnectionNodeListAbleitung : ConnectionNodeList, IConnectionNodeListAbleitung
{
  public void DoSomething();
  {
    // bla bla
  }
}


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz