LINQPad [расширение] методы

Есть ли у кого-нибудь полный список методов и методов расширения LINQPad, такие как

.Dump()

SubmitChanges()
133
задан Matt 16 January 2017 в 15:07
поделиться

2 ответа

LINQPad определяет два метода расширения (в LINQPad.Extensions), а именно Dump() и Disassemble(). Dump() записывает в окно вывода с помощью средства форматирования вывода LINQPad и перегружен, чтобы вы могли указать заголовок:

typeof (int).Assembly.Dump ();
typeof (int).Assembly.Dump ("mscorlib");

Вы также можете указать максимальную глубину рекурсии, чтобы переопределить 5 уровней по умолчанию:

typeof (int).Assembly.Dump (1);              // Dump just one level deep
typeof (int).Assembly.Dump (7);              // Dump 7 levels deep
typeof (int).Assembly.Dump ("mscorlib", 7);  // Dump 7 levels deep with heading

Disassemble() дизассемблирует любой метод в IL, возвращая результат в виде строки:

typeof (Uri).GetMethod ("GetHashCode").Disassemble().Dump();

В дополнение к этим двум методам расширения в LINQPad.Util есть несколько полезных статических методов. Они задокументированы в автозаполнении и включают в себя:

  • Cmd — выполняет команду оболочки или внешнюю программу
  • CreateXhtmlWriter — создает средство записи текста, использующее средство форматирования LINQPad Dump()
  • SqlOutputWriter - возвращает средство записи текста, которое записывает в окно вывода SQL
  • GetMyQueries, GetSamples - возвращает набор объектов, представляющих ваши сохраненные запросы/образцы (например, выполните поиск с помощью Edit | Search All)
  • Highlight — оборачивает объект так, чтобы он выделялся желтым цветом при сбросе
  • HorizontalRun — позволяет создавать дамп ряда объектов на одной строке

LINQPad также предоставляет HyperLinq класс.Это имеет две цели: первая — отображать обычные гиперссылки:

new Hyperlinq ("www.linqpad.net").Dump();
new Hyperlinq ("www.linqpad.net", "Web site").Dump();
new Hyperlinq ("mailto:user@domain.com", "Email").Dump();

Вы можете комбинировать это с Util.HorizontalRun:

Util.HorizontalRun (true,
  "Check out",
   new Hyperlinq ("http://stackoverflow.com", "this site"),
  "for answers to programming questions.").Dump();

Результат:

Проверьте этот сайт для ответы на вопросы по программированию.

Второй целью HyperLinq является динамическое построение запросов:

// Dynamically build simple expression:
new Hyperlinq (QueryLanguage.Expression, "123 * 234").Dump();

// Dynamically build query:
new Hyperlinq (QueryLanguage.Expression, @"from c in Customers
where c.Name.Length > 3
select c.Name", "Click to run!").Dump();

Вы также можете написать свои собственные методы расширения в LINQPad. Перейдите в «Мои запросы» и нажмите на запрос «Мои расширения». Любые типы/методы, определенные здесь, доступны для всех запросов:

void Main()
{
  "hello".Pascal().Dump();  
}

public static class MyExtensions
{
  public static string Pascal (this string s)
  {
    return char.ToLower (s[0]) + s.Substring(1);
  }
}

В версии 4.46(.02) были введены новые классы и методы:

  • DumpContainer (класс)
  • OnDemand (метод расширения )
  • Util.ProgressBar (класс)

Кроме того, класс Hyperlinq теперь поддерживает делегат Action, который будет вызываться при нажатии на ссылку, позволяя вам реагировать на него в коде, а не просто ссылки на внешние веб-страницы.

DumpContainer — это класс, который добавляет в окно вывода блок, содержимое которого можно заменить.

ВНИМАНИЕ! Не забудьте .Dump() сам DumpContainer в соответствующем месте.

Для использования:

var dc = new DumpContainer();
dc.Content = "Test";
// further down in the code
dc.Content = "Another test";

OnDemand — это метод расширения, который не выводит содержимое своего параметра в окно вывода, а вместо этого добавляет активную ссылку, которая при нажатии заменяет ссылку на .Dump()ed содержимое параметра. Это отлично подходит для иногда необходимых структур данных, которые являются дорогостоящими или занимают много места.

ВНИМАНИЕ! Не забудьте .Dump() результаты вызова OnDemand в соответствующем месте.

Чтобы использовать:

Customers.OnDemand("Customers").Dump(); // description is optional

Util.ProgressBar — это класс, который может отображать графическую полосу прогресса внутри окна вывода, которую можно изменить по мере продвижения кода.

ВНИМАНИЕ! Не забудьте .Dump() объект Util.ProgressBar в соответствующем месте.

Чтобы использовать:

var pb = new Util.ProgressBar("Analyzing data");
pb.Dump();
for (int index = 0; index <= 100; index++)
{
    pb.Percent = index;
    Thread.Sleep(100);
}
237
ответ дан 24 November 2019 в 00:00
поделиться

Дамп - это глобальный метод расширения, а SubmitChanges поступает из объекта DataContext, который является объектом System.Data.Linq.DataContext.

LP добавляет только Dump и Disassemble, насколько мне известно. Хотя я настоятельно рекомендую открыть его в Reflector, чтобы посмотреть, что еще можно использовать. Одна из наиболее интересных вещей - это пространство имен LINQPad.Util, в котором есть некоторые полезности, используемые LINQPad внутри компании.

2
ответ дан 24 November 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: