LINQPadでは、結果にNULLの特別なスタイルがあります。ブール値やその他の値にどのように適用できますか?

LINQPadがイタリックの緑色のテキストとしてNULLをどのようにスタイルするかに似た異なる戻り値をスタイルすることができるようにしたいと思います。具体的には、ブール値TRUEとFALSEを青と赤のように違うようにスタイルしたいと思います。

null values are styled differently

6

2 答え

これは、組み込みのスタイルシートエディタでは実行できません。ただし、次のように呼び出す拡張メソッドを記述することもできます。

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 ("" + value + "");
    }
}

拡張メソッドをVSプロジェクトに配置し、DLLをLINQPadプラグインフォルダにコピーすると、自動的にすべてのクエリで使用できるようになります。

編集:VSでプロジェクトを作成するのではなく、 'My Extensions'クエリでそのメソッドを定義できるようになりました。

8
追加された
私はあなたが明白なことをチェックしたと推測します。クラスはpublicであり、名前空間はインポートされます(またはより簡単に、それをトップレベルの名前空間に定義できます)。 LINQPadから手動でDLLを参照しているのですか、プラグインフォルダにドロップしていますか?
追加された 著者 Joe Albahari,
エクステンションクラスはLINQPadでクエリに追加しても機能しますが、別のDLLにコンパイルすると機能しません。 LINQPadは、拡張機能の定義がないと言っています。おそらく、私はVSでクラスを作成するときに見逃したことがあります。私はプラグインを焼いて最終リリースを待つことができるので、これにあなたの時間を費やしたくありません。
追加された 著者 MADCookie,
明らかにしていただきありがとうございます!私はちょうどクラス公開を設定していない!おっとっと。あなたのお手伝いをしていただきありがとうございます。
追加された 著者 MADCookie,

MyExtensionsのスケッチでこのコードブロックで成功しました:

void Main()
{
    (!(true.Dump())).Dump();
}

public static class MyExtensions
{
    public static bool Dump (this bool value)
    {       
        string c = value ? "Blue" : "Red";
        Util.RawHtml ("" + value + "").Dump();
        return value;
    }
}
3
追加された