Funktion in Deklaration

  • VB.NET

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

    Funktion in Deklaration

    Moin,

    ich habe eine Klasse mit mehreren Properties, welche unter anderem Konfigurationsdaten für WinSCP enthalten.

    Dieser Klasse möchte ich nun erweiterte Properties anfügen, unter anderem eine Property als WinSCP.SessionOptions. Wodurch beim Abruf über das Objekt direkt die SessionOptions abgerufen werden und nicht erst beim Aufbau der Ftp Verbindung die Zugangsdaten zusammengestellt werden müssen.

    Hier mal ein Beispiel;

    VB.NET-Quellcode

    1. Public ReadOnly Property SessionOptions As WinSCP.SessionOptions
    2. Get
    3. Return New WinSCP.SessionOptions With {
    4. .Protocol = WinSCP.Protocol.Ftp,
    5. .FtpSecure = XFtp.FtpSecure.GetByID(Me.FtpFtpSecure).Value,
    6. .FtpMode = XFtp.FtpMode.GetByID(Me.FtpFtpMode).Value,
    7. .HostName = Me.FtpHostName,
    8. .Password = Me.FtpPassword,
    9. .PortNumber = Me.FtpPortNumber,
    10. .UserName = Me.FtpUserName,
    11. .GiveUpSecurityAndAcceptAnySshHostKey = .Protocol = WinSCP.Protocol.Sftp,
    12. .GiveUpSecurityAndAcceptAnyTlsHostCertificate = .Protocol = WinSCP.Protocol.Ftp
    13. }
    14. End Get
    15. End Property


    WinSCP benötigt, je nach Protokoll, unterschiedliche Einstellungen.
    Wenn Protokoll = Sftp dann muss FtpSecure = None sein, sonst darf es Explicit, Implicit oder None sein. Andernfalls wird eine Fehler der DLL gemeldet.

    Meine Vorstellung dafür als Pseudo-Code:

    Quellcode

    1. .FtpSecure = WENN .Protocol = WinSCP.Protocol.Sftp DANN WinSCP.FtpSecure.None SONST WinSCP.FtpSecure.Explicit


    Also praktisch eine Funktion in einer Zeile, die mit If ... Then ... arbeitet.

    Gibt es so etwas in VB.Net?
    Ich könnte dafür natürlich auch eine Private Property / Private Function innerhalb der Klasse erstellen, welche dann .FtpSecure den richtigen Wert zuweist, allerdings interessiert es mich, ob es auch anders geht.

    Ergänzung:

    So würde ich es über eine zusätzliche Private Property lösen

    VB.NET-Quellcode

    1. .FtpSecure = Me._FtpSecure,


    VB.NET-Quellcode

    1. Private ReadOnly Property _FtpSecure As WinSCP.FtpSecure
    2. Get
    3. With Me
    4. Select Case XFtp.Protocol.GetByID(.FtpProtocol).Value
    5. Case WinSCP.Protocol.Ftp
    6. Return XFtp.FtpSecure.GetByID(.FtpFtpSecure).Value
    7. Case WinSCP.Protocol.Sftp
    8. Return WinSCP.FtpSecure.None
    9. Case Else
    10. Return WinSCP.FtpSecure.None
    11. End Select
    12. End With
    13. End Get
    14. End Property



    Grüße