В комментариях вы указали переменные, которые вам нужны, есть постоянные времени выполнения. Это означает, что они не изменятся во время выполнения, поэтому вы можете объявить их в открытом статическом классе с полями const:
public static class DebugVariables
{
public const string TEST_URL = "test.com";
public const string HTTPS_PROTOCOL = "https";
}
Теперь вы можете использовать этот класс в своем Атрибуте следующим образом:
[PageUrl(DebugVariables.TEST_URL, Protocol = DebugVariables.HTTPS_PROTOCOL)]
А теперь совместим эти знания с вашим делом:
Прежде всего, проверьте настройки вашего проекта (щелкните правой кнопкой мыши ваш проект и вкладку Build), если вы установили флажок Определить константу отладки. если вы установили этот (или любой другой символ, который вы хотели) в сборке Debug и удалили его в своей сборке выпуска, теперь вы можете использовать его вместе с директивой препроцессора #if, #else и #endif для определения следующего:
#if DEBUG
[PageUrl(DebugVariables.TEST_URL, Protocol = DebugVariables.HTTPS_PROTOCOL)]
#else
[PageUrl(ProductionVariables.TEST_URL, Protocol = ProductionVariables.HTTPS_PROTOCOL)]
#endif
public class LoginPage : AbstractPage
{
}
Если вы правильно установили постоянную отладки, вы должны увидеть, что один из путей неактивен, а другой нет. Если вы сейчас переключитесь на свой Release Build, вы должны увидеть изменение, которое означает, что отладка затенена, а другой правильно выделен.
Это означает, что вы можете создать столько статических классов с полями const, сколько вам нужно, а затем использовать приведенный выше синтаксис для установки значения в зависимости от вашей среды.