LINQPadがイタリックの緑のテキストとしてNULLをどのようにスタイルするかに似た異なる戻り値をスタイルできます。具体的には、ブール値TRUEとFALSEを青と赤のように違うようにスタイルしたいと思います。LINQPadでは、結果にNULLの特別なスタイリングがあります。ブール値やその他の値にどのように適用できますか?
6
A
答えて
8
これは、組み込みのスタイルシートエディタを介して行うことができません。しかし、あなたは次のように呼び出す拡張メソッドを書くことができます:
void Main()
{
// AdventureWorks
Contacts.Select (c => new { c.FirstName, c.LastName, NameStyle = c.NameStyle.RedBlue() }).Dump();
}
static class Extensions
{
public static object RedBlue (this bool value)
{
string c = value ? "Blue" : "Red";
return Util.RawHtml ("<span style='color:" + c + "'>" + value + "</span>");
}
}
あなたはVSプロジェクトに拡張メソッドを入れて、LINQPadプラグインフォルダにDLLをコピーする場合、それはすべてのクエリに自動的に利用できるようになります。
EDIT:VSでプロジェクトを作成するのではなく、「My Extensions」クエリでそのメソッドを定義できるようになりました。
3
私はMyExtensionsスケッチで、このコードブロックでの成功があります。LINQPadで素晴らしく
void Main()
{
(!(true.Dump())).Dump();
}
public static class MyExtensions
{
public static bool Dump (this bool value)
{
string c = value ? "Blue" : "Red";
Util.RawHtml ("<span style='color:" + c + "'>" + value + "</span>").Dump();
return value;
}
}
拡張クラスの仕事私は私のクエリでそれを追加しますが、別のDLLにコンパイルすることはできません。 LINQPadは、拡張機能の定義がないと言っています。おそらく、私はVSでクラスを作成するときに見逃したことがあります。 – MADCookie
私はあなたが明白なことを確かめたとします...クラスは公開されており、名前空間はインポートされています(またはより簡単にインポートされます)。 、それを最上位の名前空間として定義することができます)。 LINQPadから手動でDLLを参照しているのですか、プラグインフォルダにドロップしていますか? –
明らかに確認していただきありがとうございます!私はちょうどクラス公開を設定していない!おっとっと。あなたのお手伝いをしていただきありがとうございます。 – MADCookie