none
Klasse von System.Data.DataRow erben RRS feed

  • Frage

  • 

    Hallo alle zusammen.

    Ich möchte mit VB.NET in Visual Studio 2013 eine von System.Data.DataRow abgeleitete Klasse erstellen. Somit ich die Anweisung

    Inherits DataRow

    gebe, verlangt Visual Studio einen Aufruf des Basisklassenkonstruktors

    MyBase.New
    

    in jedem nur denkbaren Konstruktor der neuen Klasse. Bei diesem Aufruf müsste ich als Argument für den Parameter "builder" einen Wert vom Typ System.Data.DataRowBuilder übergeben, den ich aber nicht übergeben kann, da DataRowBuilder für DataRow-Konstruktoren nicht direkt aus dem Code heraus verwendet werden sollte. Alle meine bisherigen Versuche, dies zu umgehen, führen zu irgendeinem Fehler.

    Wie kann ich denn von einer DataRow-Klasse erben????
    Danke für jeden Tipp.



    WM

    Mittwoch, 14. Juni 2017 11:37

Antworten

  • Hi,
    vergiss besser, von DataRow erben zu wollen. Eine DataRow ist mit einer DataTable verknüpft (Spalten usw.). 

    Die frage ist, wozu Du so etwas benötigst. Wenn Du typsicher auf die Werte in einer DataRow zugreifen willst, dann mache es wie in einem typisierten DataSet. Deine Klasse erbt nicht vom DataRow, sondern hält intern nur einen Verweis auf ein DataRow-Objekt. Der Vorteil dieser Verfahrensweise ist die Möglichkeit, weitere Eigenschaften hinzuzufügen, die nicht im DataRow-Objekt enthalten sind.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 14. Juni 2017 21:34

Alle Antworten

  • Hi,
    vergiss besser, von DataRow erben zu wollen. Eine DataRow ist mit einer DataTable verknüpft (Spalten usw.). 

    Die frage ist, wozu Du so etwas benötigst. Wenn Du typsicher auf die Werte in einer DataRow zugreifen willst, dann mache es wie in einem typisierten DataSet. Deine Klasse erbt nicht vom DataRow, sondern hält intern nur einen Verweis auf ein DataRow-Objekt. Der Vorteil dieser Verfahrensweise ist die Möglichkeit, weitere Eigenschaften hinzuzufügen, die nicht im DataRow-Objekt enthalten sind.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 14. Juni 2017 21:34
  • Hallo Peter,

    vielen Dank für Deinen Hinweis.

    Ich hatte schon so etwas geahnt und inzwischen eine Kopie der DataRow in der nicht geerbten Klasse vorgehalten. Ein Verweis ist natürlich noch besser. Allerdings fehlt mir die Vorstellung, wie ich einen in der Klasse verfügbaren Verweis halten kann.

    Im Konstruktor erhalte ich den Verweis etwa so

    Sub New(ByRef dr As DataRow)

    Und dann? Kann ich den einfach einer Eigenschaft zuweisen und damit arbeiten? Etwa so:

    Property extDataRow As DataRow
    
    Sub New(ByRef dr As DataRow)
        extDataRow = dr
    End Sub
    
    ...
    extDataRow("Name") = "SonstWer"
    ...
    Danke für Deinen Hinweis.


    WM

    Donnerstag, 15. Juni 2017 09:22
  • Hi,
    das ist eine der Möglichkeiten. Wichtig ist festzulegen, was erreicht werden soll. Dann kann man auch über eine optimale Lösung entscheiden.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Donnerstag, 15. Juni 2017 16:54
  • Vielen Dank, Peter.

    WM



    WM

    Freitag, 16. Juni 2017 05:52