.Net Klassen erweitern

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    .Net Klassen erweitern

    Hallo,

    ich habe eine Frage zu den .Net Klassen.
    Und zwar würde ich gerne die bestehenden .Net Klassen erweitern.
    Das heißt nicht um eigene Benutzerdefinierte Steuerelemente, oder abgeleitete Klassen,
    sondern die bestehenden Klassen selbst.

    Ich nehme mal als Beispiel die Klasse Object.
    Ich will dass die .Net Klasse Object eine neue Property enthällt, zum Beipspiel "Tabelle"
    So würden alle untergeordneten Klassen die Property "Tabelle" von Object erben.
    Gibt einen Weg die bestehenden Klassen zu erweitern?

    Beste Grüße!

    Das ist genau das was ich NICHT meine...

    Ich schrieb ja, es geht mir nicht um Vererbung.
    Die bestehende Klasse soll, so wie sie ist, erweitert werden.

    Evt. könnte ich es mir als eine Partial Klasse vorstellen.

    Namespace System
    Partial Public Class Object

    Public Property Tabelle
    ....


    Das ist aber ganz sicher nicht die Lösung,
    wenn es denn überhaupt eine gibt.

    Grüße!
    Also ich finde die Vererbung eine durchaus Sinnvolle Lösung um eine bestehende (nich sealed) klasse zu erweitern... partial teilt die klasse doch nur über mehrere Datein auf... :/ das ist nicht grad eine erweiterung

    Das was du vorhast geht so eher nicht ;)

    Du kannst _glaub_ ich nicht den quellcode der klasse object verändern.
    Hi
    Verändern in dem Sinne geht nicht. Unter dem 3.5-Framework gibt es die Möglichkeit, Vorhandene Klassen zu erweitern:

    VB.NET-Quellcode

    1. Imports System.Runtime.CompilerServices
    2. Public Module xy
    3. <Extension()> _
    4. Public Sub bla(ByVal str As String)
    5. MsgBox(str)
    6. End Sub
    7. End Module


    Das Modul enthält die Methode bla, die den 1. Parameter (also str) erweitert.
    Funktioniert so:

    VB.NET-Quellcode

    1. Public Module DeinModul
    2. <Extension()> _
    3. Public Sub DeineErweiterteMethode(ByVal obj As DeinTypDenDuErweiternWillst, ByVal obj2 As ZusätzlicheParameter)
    4. 'Code
    5. End Sub
    6. ENd Module


    Das geht allerdings nur unter dem 3.5-Framework.

    Gruß
    ~blaze~