我經常透過 LINQPad 撰寫一些範例程式或實驗一些 C# 的新特性,其中最常使用的一個 API 就是 LINQPad 內建的 .Dump()
擴充方法了,他可以將一些執行結果輸出在結果視窗中,非常方便。如果要說缺點,應該就是沒有語法高亮(Syntax Highlight)了吧!這篇文章我來分享一個小技巧,幫助你在輸出結果呈現語法高亮!👍
先看看執行結果
如何自訂 LINQPad 擴充方法
-
先開啟 My Documents\LINQPad Plugins\NetCore3\MyExtensions.linq
檔案
這是預設給 LINQPad 使用者用來擴充查詢視窗程式的地方,該檔案有個 public static class MyExtensions
靜態類別,專門讓你在這裡寫上各種擴充方法!
預設內容如下:
void Main()
{
// Write code to test your extensions here. Press F5 to compile and run.
}
public static class MyExtensions
{
// Write custom extension methods here. They will be available to all queries.
}
// You can also define namespaces, non-static classes, enums, etc.
#region Advanced - How to multi-target
// The NETx symbol is active when a query runs under .NET x or later.
#if NET7
// Code that requires .NET 7 or later
#endif
#if NET6
// Code that requires .NET 6 or later
#endif
#if NET5
// Code that requires .NET 5 or later
#endif
#endregion
-
你可以在 MyExtensions
靜態類別中加入以下程式碼
這裡包含了 Json 與 C# 輸出的語法高亮功能:
public static string JsonPrettify(this string json)
{
using var jDoc = JsonDocument.Parse(json);
return JsonSerializer.Serialize(jDoc, new JsonSerializerOptions { WriteIndented = true });
}
public static string ToJsonDump(this object data) {
return JsonPrettify(JsonSerializer.Serialize(data)).Dump();
}
public static string DumpJson(this string code, string panelTitle = null)
{
return DumpWithSyntaxHightlighting(JsonPrettify(code), SyntaxLanguageStyle.Json, panelTitle);
}
public static string DumpCSharp(this string code, string panelTitle = null)
{
return DumpWithSyntaxHightlighting(code, SyntaxLanguageStyle.CSharp, panelTitle);
}
public static string DumpWithSyntaxHightlighting(this string code,
SyntaxLanguageStyle language = SyntaxLanguageStyle.XML,
string panelTitle = null)
{
if (panelTitle == null)
panelTitle = Enum.GetName(typeof(SyntaxLanguageStyle), language) + "Result";
PanelManager.DisplaySyntaxColoredText(code, language, panelTitle);
return code;
}
事實上,你可以從原始碼中看到 SyntaxLanguageStyle
就是用來指定語法高亮的語言樣式,支援的程式語言類型如下:
public enum SyntaxLanguageStyle
{
None,
CSharp,
VB,
FSharp,
SQL,
ESQL,
CSS,
HTML,
JavaScript,
PowerShell,
Python,
XAML,
XML,
Json
}
程式碼應該非常簡單易懂,大家都可以自己稍微修改即可使用!👍
相關連結