C-Sharp Extension Methods kombinieren
Hi @ All!
Ich suche Heute schon den ganzen Vormittag nach einer Möglichkeit 2 Extensions in einem Commando zu bündeln wie es etwa via LINQ (Lambda) möglich ist.
Bsp:
Ich habe 2 Extentions eine prüft ob ein Pfad existiert .Exists() und die andere löscht den Pfad .Delete()
Bisher habe ich diese Kombination so aufgerufen:
Ich würde das ganze aber gerne so verwenden:
Hat das schon mal jemand gemacht? Geht das überhaupt? Wo finde ich dazu etwas oder hat jemand ein kleines Beispiel?
Danke für die Unterstützung!
Grüße!
mayho
Ich suche Heute schon den ganzen Vormittag nach einer Möglichkeit 2 Extensions in einem Commando zu bündeln wie es etwa via LINQ (Lambda) möglich ist.
Bsp:
Ich habe 2 Extentions eine prüft ob ein Pfad existiert .Exists() und die andere löscht den Pfad .Delete()
Bisher habe ich diese Kombination so aufgerufen:
if(path.Exists())
{
bool return = path.Delete();
}
Ich würde das ganze aber gerne so verwenden:
bool success = path.Exists().Delete();
Hat das schon mal jemand gemacht? Geht das überhaupt? Wo finde ich dazu etwas oder hat jemand ein kleines Beispiel?
Danke für die Unterstützung!
Grüße!
mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 269692
Url: https://administrator.de/contentid/269692
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
9 Kommentare
Neuester Kommentar
Eigentlich liefere ich in beiden Extension ein bool zurück. Habe das falsch angegeben im Code (bereinigt).
OK aber dann weis deine Extension-Function nicht welchen Pfad es handhaben muss Was ginge wäre z.B. das hier, aber eigentlich umständlich (ist jetzt gerade nur VB.Net)
Imports System.IO
Imports System.Runtime.CompilerServices
Module Module1
Sub Main()
Dim strPath = "C:\Temp\demopfad"
Dim success As Boolean = System.IO.Directory.Exists(strPath).Delete(strPath)
Console.WriteLine(success)
Console.ReadLine()
End Sub
End Module
Public Module MyExtensions
<Extension()> _
Public Function Delete(result As Boolean, strPath As String) As Boolean
If result Then
Try
Directory.Delete(strPath, True)
Return True
Catch ex As Exception
Return False
End Try
Else
Return False
End If
End Function
End Module
Denke dafür musst du die "Exists" Funktion in einer eigenen Klasse überladen, so dass sie den Pfad zurückgibt anstatt einem Bool.
Na dein Exists() liefert ja ein Bool zurück, also kannst Du nur Methoden dranhängen, die ein Bool hat, also z.B. toString(). Bei einem File-Objekt gibt File.GetCreationTime() ein DateTime zurück, so dass z.B. File.GetCreationTime().Year das Jahr der Erstellung zurück gibt, ohne
zu schreiben.
DateTime dt = File.GetCreationTime();
int year = dt.Year;
zu schreiben.