У 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, він буде автоматично доступний для всіх запитів.

EDIT: тепер ви можете визначити цей метод у запиті "Мої розширення", а не створювати проект у VS.

8
додано
Я вважаю, що ви перевірили очевидні речі ... клас є загальнодоступним і імпортується простір імен (або, більш легко, ви можете визначити його простір імен верхнього рівня). Ви посилаєтеся на DLL вручну з LINQPad або видалили його в папку плагінів?
додано Автор 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
додано