1. ホーム
  2. c#

[解決済み] LINQPad [拡張]メソッド [閉鎖]のお知らせ

2022-04-28 04:45:15

質問

どなたか、LINQPadの拡張メソッドとメソッドの完全なリストをお持ちの方はいらっしゃいますか?

.Dump()

SubmitChanges()

解決方法は?

LINQPadは2つの拡張メソッドを定義しています(LINQPad.Extensions内)。 Dump()Disassemble() . Dump() はLINQPadの出力フォーマッタを使って出力ウィンドウに書き込み、見出しを指定できるようにオーバーロードされています。

typeof (int).Assembly.Dump ();
typeof (int).Assembly.Dump ("mscorlib");

また、デフォルトの5レベルを上書きするために、最大再帰深度を指定することができます。

typeof (int).Assembly.Dump (1);              // Dump just one level deep
typeof (int).Assembly.Dump (7);              // Dump 7 levels deep
typeof (int).Assembly.Dump ("mscorlib", 7);  // Dump 7 levels deep with heading

Disassemble() は、任意のメソッドをディスアセンブルして IL その出力を文字列で返します。

typeof (Uri).GetMethod ("GetHashCode").Disassemble().Dump();

これら2つの拡張メソッドに加えて、LINQPad.Utilにはいくつかの便利な静的メソッドがあります。これらはオートコンプリートでドキュメント化されており、以下のようなものがあります。

  • Cmd - シェルコマンドまたは外部プログラムを実行します
  • CreateXhtmlWriter - LINQPadのDump()フォーマッタを使用するテキストライターを作成します。
  • SqlOutputWriter - SQL 出力ウィンドウに書き込むテキストライターを返します。
  • GetMyQueries , GetSamples - 保存されたクエリー/サンプルを表すオブジェクトのコレクションを返します (例: Edit | Search All)
  • ハイライト - ダンプ時に黄色くハイライトされるようにオブジェクトをラップします。
  • 水平走行 - 一連のオブジェクトを同じ行にダンプすることができます。

LINQPadはHyperLinqクラスも提供しています。これには2つの目的があります。1つ目は通常のハイパーリンクを表示することです。

new Hyperlinq ("www.linqpad.net").Dump();
new Hyperlinq ("www.linqpad.net", "Web site").Dump();
new Hyperlinq ("mailto:[email protected]", "Email").Dump();

と組み合わせることができます。 Util.HorizontalRun :

Util.HorizontalRun (true,
  "Check out",
   new Hyperlinq ("http://stackoverflow.com", "this site"),
  "for answers to programming questions.").Dump();

結果

チェックアウト このサイト プログラミングの質問にお答えします。

HyperLinqの第二の目的は、クエリを動的に構築することです。

// Dynamically build simple expression:
new Hyperlinq (QueryLanguage.Expression, "123 * 234").Dump();

// Dynamically build query:
new Hyperlinq (QueryLanguage.Expression, @"from c in Customers
where c.Name.Length > 3
select c.Name", "Click to run!").Dump();

また、LINQPadでは独自の拡張メソッドを書くこともできます。My Queries' に行って、'My Extensions' というクエリをクリックしてください。ここで定義した型やメソッドは、全てのクエリでアクセス可能です。

void Main()
{
  "hello".Pascal().Dump();  
}

public static class MyExtensions
{
  public static string Pascal (this string s)
  {
    return char.ToLower (s[0]) + s.Substring(1);
  }
}

4.46(.02)では 新しいクラスとメソッドが導入されました :

  • DumpContainer (クラス)
  • OnDemand(拡張メソッド)
  • Util.ProgressBar (クラス)

さらに、Hyperlinq クラスが アクション デリゲートは、リンクをクリックしたときに呼び出されるため、単に外部のウェブページにリンクするだけでなく、コード内で反応させることができます。

DumpContainer は、出力ウィンドウにブロックを追加し、その内容を置き換えることができるクラスです。

NOTE! を忘れずに。 .Dump() その DumpContainer を適切な場所に配置します。

使用するには

var dc = new DumpContainer();
dc.Content = "Test";
// further down in the code
dc.Content = "Another test";

OnDemand は拡張メソッドで、パラメータの内容を出力ウィンドウに出力せず、代わりにクリック可能なリンクを追加し、クリックするとそのリンクを .Dump() を作成します。これは、時々必要とされるデータ構造で、コストがかかったり、多くのスペースを取る場合に最適です。

NOTE! を忘れずに。 .Dump() を呼び出した結果 OnDemand を適切な場所に配置します。

使用するには

Customers.OnDemand("Customers").Dump(); // description is optional

Util.ProgressBar は、出力ウィンドウ内にグラフィカルなプログレスバーを表示するクラスで、コードの進行に応じて変化させることができます。

NOTE! を忘れずに。 .Dump() を、Util.ProgressBarオブジェクトの適切な場所に配置してください。

使用するには

var pb = new Util.ProgressBar("Analyzing data");
pb.Dump();
for (int index = 0; index <= 100; index++)
{
    pb.Percent = index;
    Thread.Sleep(100);
}