Hat jemand eine vollständige Liste der LINQPad-Erweiterungsmethoden und -Methoden, wie z
.Dump()
SubmitChanges()
c#
.net
entity-framework
linq-to-sql
linqpad
Bent Rasmussen
quelle
quelle
Antworten:
LINQPad definiert zwei Erweiterungsmethoden (in LINQPad.Extensions), nämlich
Dump()
undDisassemble()
.Dump()
Schreibt mit dem Ausgabeformatierer von LINQPad in das Ausgabefenster und ist überladen, damit Sie eine Überschrift angeben können:Sie können auch eine maximale Rekursionstiefe angeben, um die Standardeinstellung von 5 Ebenen zu überschreiben:
Disassemble () zerlegt jede Methode in
IL
und gibt die Ausgabe in einer Zeichenfolge zurück:Zusätzlich zu diesen beiden Erweiterungsmethoden gibt es in LINQPad.Util einige nützliche statische Methoden. Diese werden in Autocompletion dokumentiert und umfassen:
LINQPad bietet auch die HyperLinq-Klasse. Dies hat zwei Zwecke: Der erste besteht darin, normale Hyperlinks anzuzeigen:
Sie können dies kombinieren mit
Util.HorizontalRun
:Ergebnis:
Der zweite Zweck von HyperLinq besteht darin, Abfragen dynamisch zu erstellen:
Sie können auch Ihre eigenen Erweiterungsmethoden in LINQPad schreiben. Gehen Sie zu "Meine Abfragen" und klicken Sie auf die Abfrage "Meine Erweiterungen". Alle hier definierten Typen / Methoden sind für alle Abfragen zugänglich:
In 4.46 (.02) wurden neue Klassen und Methoden eingeführt :
Darüber hinaus unterstützt die Hyperlinq-Klasse jetzt einen Aktionsdelegierten , der aufgerufen wird, wenn Sie auf den Link klicken, sodass Sie im Code darauf reagieren und nicht nur auf externe Webseiten verlinken können.
DumpContainer
ist eine Klasse, die dem Ausgabefenster einen Block hinzufügt, dessen Inhalt ersetzt werden kann.HINWEIS! Denken Sie daran,
.Dump()
dieDumpContainer
sich in der entsprechenden Stelle.Benutzen:
OnDemand
ist eine Erweiterungsmethode, die den Inhalt ihres Parameters nicht in das Ausgabefenster ausgibt, sondern stattdessen einen anklickbaren Link hinzufügt, der beim Klicken den Link durch den.Dump()
ed-Inhalt des Parameters ersetzt. Dies ist ideal für manchmal benötigte Datenstrukturen, die teuer sind oder viel Platz beanspruchen.HINWEIS! Denken Sie an
.Dump()
die Ergebnisse des AnrufsOnDemand
an der entsprechenden Stelle.Um es zu benutzen:
Util.ProgressBar
ist eine Klasse, die einen grafischen Fortschrittsbalken im Ausgabefenster anzeigen kann, der im Verlauf des Codes geändert werden kann.HINWEIS! Denken Sie an
.Dump()
das Util.ProgressBar-Objekt an der entsprechenden Stelle.Um es zu benutzen:
quelle
Neben dem bekannten
myQuery.Dump("Query result:")
Merkmal ist auch dieUtil
Klasse zu erwähnen : Sie enthält viele recht praktische Methoden (einige davon habe ich erwähnt, aber es gibt noch viel mehr).Interessant ist auch , dass man die Art und Weise ändern
Dump()
Werke .Abschließend zeige ich Ihnen, wie Sie Änderungen dauerhaft vornehmen (dh LINQ-Abfragen einfügen, aktualisieren, löschen ) können, indem Sie
SubmitChanges()
oderSaveChanges()
auf das interne Verbindungsobjekt von LinqPad zugreifen.Abschließend zeige ich Ihnen, wie Sie in LinqPad einfache 2D-Grafiken erstellen können (Zeichnen von Linien, Bitmaps oder Funktionen ).
Hier ist eine Sammlung integrierter LinqPad-Funktionen (aus eigener Erfahrung mit dem Tool):
.Dump ()
(Parameter verfügbar in LinqPad v5.03.08 und höher)
Alle LinqPad-Benutzer kennen und lieben die
.Dump()
Erweiterungsmethode, die (fast) alles verbraucht und druckt.Aber wussten Sie, dass einige Parameter verfügbar sind? Schauen Sie sich dieses Code-Snippet an:
Das erste Beispiel druckt nur Variablen
a
undc
und verbirgt sichb
undd
das zweite Beispiel macht das Gegenteil (beachten Sie, dass nur 2 der verfügbaren Parameter angegeben werden). Die Variableny
undz
können nicht einzeln ausgeblendet werden, weil sie nicht auf der obersten Ebene sind.Folgende Parameter stehen zur Verfügung ( alle sind optional ):
description
[string] - Enthält eine Beschreibung für das zu sichernde Objektdepth
[int?] - begrenzt, wie tief die Objekte rekursiv untersucht werdentoDataGrid
[bool] - Wenn true, wird die Ausgabe als Datagrid und nicht als RichText formatiertexclude
[string] - Wenn Sie eine durch Kommas getrennte Liste von Variablen angeben, werden diese von der Ausgabe ausgeschlossen (im Beispiel "a, c":b
undd
werden angezeigta
undc
ausgeblendet).exclude
[string] mit dem Präfix "+" - Das Präfix invertiert die Logik des Ausschlussparameters. Dies bedeutet, wenn Sie eine durch Kommas getrennte Liste von Variablen bereitstellen, werden alle außer den angegebenen ausgeblendet (im Beispiel "+ b, d":b
undd
werden angezeigt, alle anderen ausgeblendet).var x=Util.ToExpando(obj, "a, c", "b, d"); x.Dump();
Die erste Zeichenfolge enthält eine Liste der einzuschließenden Eigenschaften, die zweite Zeichenfolge eine Liste, die ausgeschlossen werden soll
.OnDemand("click me").Dump();
anstelle von verwenden.Dump()
, wird ein Link angezeigt, auf den Sie zum Erweitern klicken können. Nützlich, wenn Sie Werte überprüfen möchten, z. B.Util.OnDemand("Customer-ID: " + customerObject.ID.ToString(), ()=>customerObject, false).Dump();
um immer die ID standardmäßig anzuzeigen, die Details jedochcustomerObject
nur dann anzuzeigen, wenn Sie daran interessiert sind.Weiterführende Themen zu Dump finden Sie hier und da .
Umgebung
Dies ist keine LinqPad-Erweiterung, sondern eine .NET-Klasse, aber da sie nützlich ist, werde ich sie trotzdem erwähnen. Sie können viele nützliche Informationen erhalten, die Sie in Ihren Skripten verwenden können, wie zum Beispiel:
NB Für den Erhalt
Domain\UserName
würde ichSystem.Security.Principal.WindowsIdentity.GetCurrent().Name
eher verwenden als
Environment.UserDomainName+@"\"+Environment.UserName
.Util.WriteCsv
( neu: verfügbar seit LinqPad Version v4.45.05 (Beta) )
Dadurch wird der Inhalt der Tabelle
Customers
in die CSV-Datei geschriebenc:\temp\customers.csv
. Sie können auch ein schönes Beispiel finden , wie zu benutzenUtil.WriteCsv
und dann die CSV - Daten zeigen in LINQPad das Ergebnisfenster hier .Hinweise:
Um eine CSV-Datei abzurufen / zu erstellen, die sich im selben Verzeichnis wie die Abfrage befindet, können Sie Folgendes verwenden:
var csvFile=Util.CurrentQueryPath.Replace(".linq", ".csv");
Wenn die Tabelle groß ist, verwenden
ObjectTrackingEnabled = false;
Sie sie, bevor Sie die CSV schreiben, um ein Zwischenspeichern im Speicher zu vermeiden.Wenn Sie eine Tabelle im XML-Format anstatt als durch Kommas getrennte Datei ausgeben möchten , können Sie dies wie folgt tun:
In diesem Beispiel werden alle Elemente mit dem Attribut zurückgegeben,
attr1
das den Wert"a"
aus einer XML-Datei enthält, die denselben Namen wie die Abfrage hat und im selben Pfad enthalten ist. Weitere Codebeispiele finden Sie unter diesem Link.Util.GetPassword
Dadurch wird das Kennwort aus dem in LinqPad integrierten Kennwortmanager abgerufen. So erstellen und das Passwort zu ändern, öffnen Sie den „Password Manager“ Menüpunkt im Menü „Datei“ von LinqPad. Wenn beim Ausführen des C # -Codes kein Kennwort gespeichert wird, wird ein Kennwortdialog geöffnet, in dem Sie nach dem Kennwort gefragt werden. Sie haben die Möglichkeit, es im laufenden Betrieb zu erstellen und zu speichern, indem Sie das Kontrollkästchen Kennwort speichern aktivieren (im Beispiel das Kennwort) für "UserXY" würde gespeichert, und später finden Sie diesen Eintrag im Passwort-Manager ).
Vorteile sind, dass Sie das Kennwort in den von Ihnen erstellten LinqScripts sicher, separat und verschlüsselt im Windows-Benutzerprofil speichern können (es wird
%localappdata%\LINQPad\Passwords
als Datei gespeichert). LinqPad verwendet Windows DPAPI, um das Kennwort zu schützen.Außerdem wird das Kennwort zentral gespeichert. Wenn Sie es ändern müssen, können Sie dies im Menü tun. Es gilt sofort für alle von Ihnen erstellten Skripts.
Anmerkungen:
Wenn Sie das Kennwort nicht speichern und nur ein Kennwortdialogfeld
var pwd = Util.GetPassword("UserXY", true);
aufrufen möchten , können Sie den zweiten Parameter wie folgt verwenden: Dadurch wird das Kontrollkästchen Kennwort speichern im Kennwortdialogfeld deaktiviert (der Benutzer kann es jedoch weiterhin aktivieren und wählen Sie trotzdem zu speichern).
Wenn Sie möchten, dass das Passwort in a gespeichert wird, können Sie diese Hilfsfunktion verwenden
SecureString
(nb: Um die Erweiterungsmethode zu.ToSecureString()
verwenden, folgen Sie bitte diesem Link bei Stackoverflow - Sie können es bei Bedarf auch zurückkonvertieren):System.Security.SecureString GetPasswordSecure(string Name, bool noDefaultSave=true)
{
return Util.GetPassword(Name, noDefaultSave)
.ToSecureString();
}
Util.Cmd
Diese Methode funktioniert wie ein Befehlsprozessor. Sie können alle Ihnen bekannten Befehle über die Windows-Konsole aufrufen.
Beispiel 1 - dir:
Dadurch wird das Ergebnis des Verzeichnisses ausgegeben, ohne dass dies erforderlich
.Dump
ist. Das Speichern in einer Variablen hat den Vorteil, dass Sie weitere Linq-Abfragen verwenden können. Beispielsweise:Dadurch werden alle Dateien mit den darin enthaltenen Dateierweiterungen ".exe" oder ".dll" ausgegeben
C:\windows\system32
. Der/s
Schalter wird verwendet, um alle Unterverzeichnisse zu rekursieren, und/b
wird für das reine Ausgabeformat verwendet. Beachten Sie, dass der zweite Parameter der Cmd-Methode angegeben wird, um die Konsolenausgabe zu unterdrücken und nur das gefilterte Ergebnis mit der Dump-Methode anzuzeigen.Sie können sehen, dass dies flexibler ist als die Platzhalter, mit denen Sie arbeiten,
dir
da Sie die volle Flexibilität der Linq-Abfrage-Engine nutzen können.Beispiel 2 - Texteditor:
Sie können eine Datei im Editor wie folgt öffnen:
Util.Image
Zeigt Bilder von einer URL an. Beispiel:
Util.ProgressBar, Util.Progress
Mit
Util.ProgressBar
können Sie einen Fortschrittsbalken anzeigen. Sie können die folgende Hilfsklasse verwenden:Verwenden Sie es einfach wie im folgenden Beispiel gezeigt:
Alternativ können
Util.Progress
Sie die integrierte Fortschrittsanzeige von LinqPads aktualisieren, zum Beispiel:Der Unterschied besteht darin, dass es nicht im Ergebnisfenster angezeigt wird und Sie ihm keine Nachricht zuweisen können.
Util.RawHtml
Zeigt HTML im Ausgabefenster an. Beispiel:
Hyperlinq, Util.HorizontalRun
Sie können diese Beispielfunktion verwenden
um Hyperlinks im Ergebnisfenster anzuzeigen - oder Aktionen wie das Öffnen Ihres Lieblingseditors. Verwendung:
Beachten Sie, dass diese Funktion immer funktioniert, während
new Hyperlinq ("http://myURL", "Web site").Dump();
sie für bestimmte URLs nicht funktioniert (insbesondere, wenn Sie Portnamen wie ": 1234" als Teil der URL übergeben müssen).Util.ReadLine
Liest Eingaben von der Konsole. Beispiel:
Als Synonym für
Util.ReadLine<string>()
können Sie auch verwendenConsole.ReadLine()
.Aber es gibt noch mehr! Sie können einen einfachen JSON-Parser mit dem folgenden Snippet erstellen - sehr nützlich, wenn Sie beispielsweise eine JSON-Zeichenfolge im laufenden Betrieb analysieren und testen möchten. Speichern Sie das folgende Snippet mit einem Texteditor als JSONAnalyzer.linq und öffnen Sie es dann in LinqPad (um die Referenzen einfach im Handumdrehen hinzuzufügen):
Jetzt können Sie es ausführen und einfach eine JSON-Zeichenfolge aus der Zwischenablage in die Konsole einfügen. Mit dieser
Dump
Funktion wird sie als Objekt angezeigt. Außerdem werden die Fehlermeldungen des Parsers auf dem Bildschirm angezeigt, um Probleme zu beheben. Sehr nützlich zum Debuggen von AJAX.Util.ClearResults
Wenn Sie das Ergebnisfenster in Ihrem Skript löschen müssen, verwenden Sie:
Verwenden Sie es entweder oben in Ihrem Skript oder - wenn Sie mehrere Abfragen in einem Skript ausführen - sollten Sie auf Benutzereingaben warten, bevor Sie den Bildschirm ausblenden (z. B. indem Sie ihm vorangestellt werden
Util.ReadLine
).Custom .Dump () - ICustomMemberProvider
Interessant ist auch, dass Sie die Ausgabe der
.Dump()
Methode ändern können . Implementieren Sie einfach die SchnittstelleICustomMemberProvider
, zWenn Sie eine Instanz dieser Klasse erstellen, wie z
dann wird es nur ausgegeben
Hint
,constMember1
,constMember2
, undmyprop
, aber nicht Eigentumxyz
:Anzeigen einer MessageBox oder InputBox in LinqPad
Wenn Sie ein Meldungsfeld anzeigen müssen, lesen Sie hier, wie es geht.
Beispielsweise können Sie eine InputBox mithilfe des folgenden Codes anzeigen
(Vergessen Sie nicht, F4 zu drücken und Microsoft.VisualBasic.dll und seine Namespaces hinzuzufügen, damit dies funktioniert.)
Util.Run
( neu: verfügbar seit LinqPad Version v4.52.1 (Beta) )
Ermöglicht das Ausführen eines anderen LINQPad-Skripts in Ihrem Skript oder in Ihrem eigenen .NET-Programm oder Windows-Dienst (unter Bezugnahme auf die LINQPad4-AnyCPU-Version von
LINQPad.exe
). Das Skript wird genau so ausgeführt, wie es das Befehlszeilentoollprun.exe
tun würde.Beispiele:
In diesem Beispiel wird das Skript ausgeführt
foo.linq
, das den folgenden Beispielcode enthält:Hier können Sie überprüfen, ob das Skript in der LinqPad-Benutzeroberfläche oder über
lprun.exe
oder mit ausgeführt wurdeUtil.Run
.Hinweis: Die folgenden Aufrufvarianten können hilfreich sein:
SubmitChanges () - Linq To SQL
Wenn Sie LinqToSQL verwenden , möchten Sie möglicherweise Änderungen dauerhaft vornehmen (für Einfüge- / Aktualisierungs- / Löschvorgänge ). Da der Datenbankkontext implizit von LinqPad erstellt wird, müssen Sie
SubmitChanges()
nach jeder Änderung wie unten gezeigt aufrufen .Beispiele für die (LinqPad-) Northwind- Datenbank:
Einfügen
Aktualisieren
Löschen
Hinweis: Um gültige IDs für die vorherigen Beispiele zu erhalten, können Sie Folgendes verwenden:
bevor Sie sie aufrufen.
SaveChanges () - Entity Framework
Wenn Sie Entity Framework verwenden , möchten Sie möglicherweise auch Änderungen dauerhaft vornehmen (für Einfüge- / Aktualisierungs- / Löschvorgänge ). Da der Datenbankkontext implizit von LinqPad erstellt wird, müssen Sie
SaveChanges()
nach jeder Änderung wie unten gezeigt aufrufen .Die Beispiele sind im Grunde die gleichen wie zuvor für LinqToSQL , aber Sie müssen
SaveChanges()
stattdessen verwenden, und zum Einfügen und Löschen haben sich auch die Methoden geändert.Einfügen
Aktualisieren
Löschen
Hinweis: Um gültige IDs für die vorherigen Beispiele zu erhalten, können Sie Folgendes verwenden:
bevor Sie sie aufrufen.
this - Datenbankkontext
In LinqPad wird der Datenbankkontext automatisch angewendet, indem Sie das Kombinationsfeld oben verwenden und die richtige Datenbank für Ihre Abfrage auswählen . Manchmal ist es jedoch hilfreich, explizit darauf zu verweisen, z. B. wenn Sie Code aus Ihrem Projekt aus Visual Studio kopieren und in LinqPad einfügen.
Ihr Codefragment aus dem Visual Studio-Projekt sieht sehr wahrscheinlich folgendermaßen aus:
Was soll ich jetzt machen
dc
? Natürlich können Sie jedes Vorkommendc.
in Ihrer Abfrage entfernen , aber es ist viel einfacher. Einfach hinzufügenan die Spitze Ihres Snippets wie folgt:
und der Code wird sofort funktionieren!
this.Connection
Verwenden von LinqPad mit OleDb, Konvertieren einer Datentabelle in ein Linq-Objekt, SQL-Abfragen in Linq
Das folgende Codefragment hilft Ihnen bei der Verwendung von LinqPad mit OleDb. Fügen Sie
System.Data.OleDb
aus derSystem.Data
Assembly die Abfrageeigenschaften hinzu und fügen Sie den folgenden Code einMain()
:Fügen Sie nun eine SqlServer-Verbindung zu LinqPad hinzu und fügen Sie die Northwind-Datenbank hinzu, um dieses Beispiel auszuführen.
NB: Wenn Sie nur die Datenbank und den Server der aktuell ausgewählten Verbindung abrufen möchten, können Sie dieses Codefragment verwenden:
Sie können sogar
myDS
in Linq konvertieren . Die Antworten auf die folgende Frage zeigen, wie es geht: Schöne Beispiele für die Verwendung des dynamischen Schlüsselworts .NET 4 mit LinqEin weiteres Beispiel: Angenommen, Ihr DBA gibt Ihnen eine SQL-Abfrage und Sie möchten die Ergebnisse in LinqPad analysieren - natürlich in Linq, nicht in SQL. Dann können Sie Folgendes tun:
In diesem Beispiel wird die SELECT-Abfrage des Datenbankadministrators nur in den Befehlstext "geworfen", und die Ergebnisse werden nach Stadt gefiltert und sortiert.
Dies ist natürlich ein vereinfachtes Beispiel. Ihr DBA würde Ihnen wahrscheinlich ein komplexeres Skript geben, aber Sie haben die Idee: Fügen Sie einfach eine unterstützende Ergebnisklasse hinzu, die alle Felder aus der SELECT-Klausel enthält, und verwenden Sie sie dann direkt .
Auf diese Weise können Sie sogar das Ergebnis einer gespeicherten Prozedur in Linq verwenden. Wie Sie sehen können, ist mir in diesem Beispiel der Datentyp und seine Verwendung
dynamic
zum Ausdrücken egal .Es geht also wirklich um schnelle Programmierung, um Daten schnell analysieren zu können. Sie sollten dies aus verschiedenen Gründen in Ihrer realen Anwendung nicht tun (SQL-Injection, da Sie EF von Anfang an verwenden können usw.).
PanelManager
Zeichnen Sie eine Grafik in LinqPad, Teil 1
So verwenden Sie die untenstehenden Beispiele, drücken Sie F4und fügen Sie
System.Windows.dll
,System.Windows.Forms.dll
,WindowsFormsIntegration.dll
,PresentationCore.dll
undPresentationFramework.dll
zu Ihrem LinqPad Programm und auch den Namespace hinzufügenSystem.Windows.Shapes
.Das erste Beispiel zeichnet einfach eine Linie:
Das zweite Beispiel zeigt, wie Sie mithilfe des PanelManager Grafiken in LinqPad anzeigen können. Normalerweise unterstützt LinqPad nur Wpf-Objekte. In diesem Beispiel wird
System.Windows.Forms.Integration.WindowsFormsHost
ein machen , zurWindows.Forms.PictureBox
Verfügung (es wurde inspiriert durch diese ):Dadurch wird die folgende Grafik erstellt (die Bedienfeldelemente "Grafik" und "Bild" werden durch die obigen Beispiele hinzugefügt):
Wenn Sie die Bilder aus der Northwind-Datenbank anzeigen möchten , haben Sie folgende
Möglichkeiten : Ändern Sie den Namen der Bilddatei in "NorthwindPics.jpg" und fügen Sie den folgenden Code am Anfang der Main () -Methode des zweiten Beispiels hinzu :
Es liest den ersten Datensatz aus der Employees-Tabelle und zeigt das Bild an.
Weitere Informationen finden Sie unter den folgenden Links:
Formen und Grundzeichnung in benutzerdefinierten WPF
LinqPad-Visualisierern
Hinweis: Sie können dasselbe auch ohne den PanelManager erreichen, wie das folgende Beispiel zeigt, das ich hier gesehen habe :
Es verwendet den
.Dump()
Befehl, um es anzuzeigen. Sie könnenimage.Dump()
mehrmals aufrufen und das Bild wird angehängt.Windows Forms
Zeichnen Sie eine Grafik in LinqPad, Teil 2
Das folgende Beispiel, das von diesem Beitrag inspiriert wurde , zeigt, wie ein einfacher Funktionsplotter in Linqpad 5 mit C # 7 implementiert wird:
Es nutzt die Funktion von LinqPad, um Windows-Formulare im Ergebnisfenster anzuzeigen. In Referenzen (Presse ) : , , und fügen Sie alle Namespaces aus diesen Baugruppen.
F4
System.Drawing.dll
System.Windows.Forms.dll
System.Windows.Forms.DataVisualization.dll
Zusätzliche Hinweise / weiterführende Literatur:
Möchten Sie LinqPad in Visual Studio verwenden ? So können Sie das machen .
Benötigen Sie LinqPad als "tragbare App" ? Lesen Sie hier, wie das geht.
Joes Website für LinqPad ist immer eine ausgezeichnete Quelle. In LinqPad erhalten
Help -> What's New
Sie Hinweise zu neuen Funktionen und Methoden. Das LinqPad-Forum enthält auch hilfreiche Hinweise.Ebenfalls sehr hilfreich: Dieser Artikel über das Debuggen von Linq (Pad).
Verwenden Sie
lprun.exe
für LINQ - Abfragen laufen in Ihren Batch - Skripten. Lesen Sie diesen Artikel für weitere Details. Beispiel:echo Customers.Take(100) > script.txt
lprun -lang=e -cxname=CompanyServer.CustomerDb script.txt
In diesem Beispiel ist die Abfrage ein einfacher LINQ-Ausdruck. Natürlich können Sie auch komplexe Abfragen vorbereiten
-lang=program
, um den Programmiermodus zu aktivieren.Sie können Erweiterungsmethoden schreiben und auf der Registerkarte Meine Abfragen auf der linken Seite von LinqPad speichern: Das letzte Element des Baums heißt Meine Erweiterungen . Doppelklicken Sie darauf, um eine Datei zu öffnen, in die Sie Erweiterungen schreiben können, die für alle Ihre Abfragen verfügbar sind. Fügen Sie sie einfach in die öffentliche statische Klasse ein
MyExtensions
und verwenden Sie dieMain()
Methode, um Tests für Ihre Erweiterungen einzuschließen.quelle
Dump ist eine globale Erweiterungsmethode und SubmitChanges stammt aus dem DataContext-Objekt, das ein System.Data.Linq.DataContext-Objekt ist.
LP fügt meines Wissens nur Dump and Disassemble hinzu. Ich würde es jedoch sehr empfehlen, es in Reflector zu öffnen, um zu sehen, was noch verwendet werden kann. Eines der interessantesten Dinge ist der LINQPad.Util-Namespace, der einige Extras enthält, die von LINQPad intern verwendet werden.
quelle
.Dump()
oder eine andere Methode im Quellcode-Editor und drücken Sie F12, um zu "reflektieren". Dies ist jetzt in das Tool eingebaut!Erreichte die Stackoverflow Text Grenze in meiner vorherigen Antwort , aber es gibt noch mehr coolen Erweiterungen in LinqPad. Einer von ihnen möchte ich erwähnen:
JavaScript-Funktionen (mit
.Dump()
)Seit der Beta- Version 5.42 von LinqPad können Sie JavaScript-Funktionen einbetten und direkt aus Ihrem C # -Code aufrufen. Obwohl dies einige Einschränkungen aufweist (im Vergleich zu JSFiddle), ist es eine gute Möglichkeit, schnell JavaScript-Code in LinqPad zu testen.
Beispiel:
In diesem Beispiel wird eine Funktion
jsFoo
mit einem Parameter vorbereitet und in der Variablen gespeichertliteral
. Dann wird es gerendert und über aufgerufen.Dump().HtmlElement.InvokeScript(...)
, wobei der Parameter übergeben wirdtestparam
.Die JavaScript-Funktion wird verwendet,
external.Log(...)
um Text in den Ausgabefenstern von LinqPad auszugeben undalert(...)
eine Popup-Nachricht anzuzeigen.Sie können dies vereinfachen, indem Sie die folgenden Erweiterungsklassen / -methoden hinzufügen :
Dann können Sie das vorherige Beispiel wie folgt aufrufen:
Das hat den gleichen Effekt, ist aber leichter zu lesen (wenn Sie mehr JavaScript machen wollen ;-)).
Eine weitere Option, wenn Sie Lambda-Ausdrücke mögen und den Funktionsnamen nicht bei jedem Aufruf als Zeichenfolge angeben möchten, können Sie Folgendes tun:
vorausgesetzt, Sie haben die Hilfsfunktion hinzugefügt
zur Klasse
ScriptExtension
. Dadurch wird der von Ihnen verwendete Variablenname (hierjsFoo
) aufgelöst, der zufällig mit der JavaScript-Funktion selbst identisch ist (Beachten Sie, wie der Lambda-Ausdruck zum Auflösen des Variablennamens verwendet wird. Dies kann nicht mithilfenameof(paramName)
der Funktion erfolgen)..Dump () - Aktualisieren einer Nachricht inline
Manchmal ist es nützlich, den ausgegebenen Text zu überschreiben, anstatt ihn in eine neue Zeile zu setzen, z. B. wenn Sie eine lang laufende Abfrage durchführen und deren Fortschritt usw. anzeigen möchten (siehe auch ProgressBar unten). Dies kann mit a erfolgen
DumpContainer
. Sie können es wie in der Abbildung gezeigt verwendenBeispiel 1:
Beachten Sie, dass Sie für einige komplexere Objekte möglicherweise
dc.UpdateContent(obj);
eher als verwenden müssendc.Content=...
.Beispiel 2:
Util.ProgressBar
Das Anzeigen des Fortschritts kann auch mithilfe einer ProgressBar wie folgt erfolgen:
Beispiel:
Dies ähnelt dem vorherigen Dump-Beispiel, zeigt jedoch diesmal eine schöne Fortschrittsbalkenanimation.
Unit-Test mit LinqPad - xUnit
Wussten Sie, dass Sie Unit-Tests in LinqPad schreiben können? Sie können beispielsweise das xUnit-Framework verwenden. Es ist über die NUGET-Unterstützung von LinqPad - via F4- im Dialogfeld verfügbar Add NUGET..... Hier finden Sie eine schrittweise Beschreibung der Verwendung von xUnit mit LinqPad V5 oder V6.
Wenn ich mehr entdecke, werde ich diese Antwort aktualisieren
quelle