Помимо расширения Immediate Window или создания нового расширения для VS, я могу подумать о следующих решениях, которые позволят вам использовать несколько методов отладки:
- Использование #if DEBUG + Partial Classes или Methods Extension
- Использование условных ссылок + методов расширения
- Использование Assembly.Load в Immediate Window + Методы расширения
Я поделюсь примером для каждого из приведенных выше решений.
Использование #if DEBUG + Частичные классы или методы расширения
Вы можете использовать #, если DEBUG . Для типов в вашей кодовой базе вы можете сгруппировать методы отладки в другие части вашего класса, используя частичные классы, например:
public partial class MyClass
{
#if DEBUG
public string SaySomething()
{
return "Something!";
}
#endif
}
Для типов, которые вам не принадлежат, вы можете использовать методы расширения вот так (вы также можете использовать это решение для типов, которые вам принадлежат):
public static class SqlCommandExtensions
{
#if DEBUG
public static string SaySomething(this SqlCommand command)
{
return "Something!";
}
#endif
}
Использование условных ссылок + методов расширения
Если вы хотите поместить весь этот код в В другой библиотеке вы создаете библиотеку классов и помещаете классы расширения в глобальное пространство имен (без пространства имен), а затем добавляете условную ссылку:
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<Reference Include="GlobalExtensions">
<HintPath>..\Somewhere\GlobalExtensions.dll</HintPath>
</Reference>
</ItemGroup>
В этом решении вам не требуется отладка.
public static class SqlCommandExtensions
{
public static string SaySomething(this SqlCommand command)
{
return "Something!";
}
}
Использование Assembly.Load в Immediate Window + Методы расширения
В качестве другого варианта вы можете создать другую сборку и затем поместить эти методы расширения в глобальное пространство имен (без пространства имен) в этой сборке. Затем, без добавления ссылки, и просто во время отладки, вы можете использовать их в ближайшем окне:
Assembly.LoadFile(@"C:\Somewhere\GlobalExtensions.dll")
yourSqlCommand.SaySomething()
В этом решении вам не нужна отладка, вам также не нужна ссылка на добавление и он доступен только во время отладки и в ближайшем окне:
public static class SqlCommandExtensions
{
public static string SaySomething(this SqlCommand command)
{
return "Something!";
}
}
У вас не будет смысла для него в непосредственном окне, но он работает.