2011-10-27 4 views

答えて

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」クエリでそのメソッドを定義できるようになりました。

+0

拡張クラスの仕事私は私のクエリでそれを追加しますが、別のDLLにコンパイルすることはできません。 LINQPadは、拡張機能の定義がないと言っています。おそらく、私はVSでクラスを作成するときに見逃したことがあります。 – MADCookie

+1

私はあなたが明白なことを確かめたとします...クラスは公開されており、名前空間はインポートされています(またはより簡単にインポートされます)。 、それを最上位の名前空間として定義することができます)。 LINQPadから手動でDLLを参照しているのですか、プラグインフォルダにドロップしていますか? –

+0

明らかに確認していただきありがとうございます!私はちょうどクラス公開を設定していない!おっとっと。あなたのお手伝いをしていただきありがとうございます。 – MADCookie

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; 
    } 
}