誰でも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にはいくつかの便利な静的メソッドがあります。これらはオートコンプリートで文書化されており、次のものが含まれます。
LINQPadはHyperLinqクラスも提供します。これには2つの目的があります。最初の目的は、通常のハイパーリンクを表示することです。
_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の2番目の目的は、クエリを動的に構築することです。
_// 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で独自の拡張メソッドを作成することもできます。 [マイクエリ]に移動し、[マイ拡張機能]というクエリをクリックします。ここで定義するタイプ/メソッドはすべてのクエリにアクセスできます:
_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)で 新しいクラスとメソッドが導入されました :
さらに、Hyperlinqクラスは、リンクをクリックしたときに呼び出される Action デリゲートをサポートするようになりました。これにより、外部Webページへのリンクだけでなく、コードで反応することができます。
DumpContainer
は、内容を置換できるブロックを出力ウィンドウに追加するクラスです。
注!.Dump()
DumpContainer
自体を適切な場所に忘れないでください。
使用するには:
_var dc = new DumpContainer();
dc.Content = "Test";
// further down in the code
dc.Content = "Another test";
_
OnDemand
は、パラメータの内容を出力ウィンドウに出力せず、クリック可能なリンクを追加する拡張メソッドです。クリックすると、リンクが.Dump()
edの内容に置き換えられますパラメータ。これは、コストがかかるか、多くのスペースを必要とする、時々必要なデータ構造に最適です。
注!適切な場所でOnDemand
を呼び出した結果を.Dump()
することを忘れないでください。
使用するには:
_Customers.OnDemand("Customers").Dump(); // description is optional
_
_Util.ProgressBar
_は、出力ウィンドウ内にグラフィカルなプログレスバーを表示できるクラスで、コードが進むにつれて変更できます。
注!.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);
}
_
ダンプはグローバル拡張メソッドであり、SubmitChangesはSystem.Data.Linq.DataContextオブジェクトであるDataContextオブジェクトから取得されます。
私が知る限り、LPはダンプと逆アセンブルのみを追加します。 Reflectorで開くことを強くお勧めしますが、他に使用可能なものがあるかどうかを確認します。より興味深いものの1つは、LINQPadによって内部的に使用されるいくつかの利点を持つLINQPad.Util名前空間です。