Mi piacerebbe essere in grado di applicare diversi valori di ritorno simili a come gli stili LINQPad NULL come testo verde in corsivo. Nello specifico, vorrei dare uno stile ai valori booleani TRUE e FALSE in modo diverso come il blu e il rosso.In LINQPad, i risultati hanno uno stile speciale per NULL. Come posso applicarlo ai valori booleani o ad altri valori?
6
A
risposta
8
Questo non può essere fatto attraverso il built-in editor di foglio di stile. Tuttavia si potrebbe scrivere un metodo di estensione che si richiama nel modo seguente:
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>");
}
}
Se si mette il metodo di estensione in un progetto VS e copiare la DLL nella LINQPad plugin cartella, sarà disponibile automaticamente a tutte le domande.
MODIFICA: ora è possibile definire tale metodo nella query "Le mie estensioni" anziché dover creare un progetto in VS.
3
devo successo con questo blocco di codice in MyExtensions schizzo:
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;
}
}
Il lavoro estensioni classe meravigliosamente in LINQPad quando lo aggiungo a mia domanda, ma compilarlo in una DLL separata non funziona. LINQPad sta dicendo che non ha una definizione per l'estensione. Forse c'è qualcosa che mi è mancato durante la creazione di una lezione in VS. Non voglio prendere il tuo tempo su questo aspetto, perché posso aspettare la versione finale con plug-in. – MADCookie
Presumo che tu abbia controllato le cose ovvie ... la classe è pubblica e il namespace è importato (o più facilmente , puoi definirlo il namespace di primo livello). Stai facendo riferimento manualmente alla DLL da LINQPad o rilasciandola nella cartella dei plug-in? –
Grazie per aver verificato l'ovvio! Non ho impostato il pubblico della classe !! Ops. Grazie per il tuo aiuto e questo ottimo consiglio per migliorare l'output. – MADCookie