Проверка формата строки во время компиляции в C#

Если у вас есть все совпадающие строки, то inner join хорошо. Я бы не стал рекомендовать full outer join, если вам небезразличны несоответствия. Вместо этого union all предлагает подход:

select code1,
       sum(month1) / nullif(sum(month1_2), 0) as ratio_1,
       sum(month2) / nullif(sum(month2_2), 0) as ratio_1,
       sum(month3) / nullif(sum(month3_2), 0) as ratio_1,
from ((select t1.code1, month1, month2, month3
       from t1
      ) union all
      (select t2.code1, null, null, null, t2.month1 as month1_2, t2.month2 as month2_2, t2.month3 as month3_2
       from t2
      )
     ) t
group by code1;
6
задан roomaroo 3 February 2009 в 12:27
поделиться

5 ответов

Вы могли проверить значения с модульным тестом. Один из моих коллег должен был сделать что-то подобное этому в проекте, где мы должны были удостовериться, что всем классам в определенном пространстве имен относились к определенным атрибутам их.

Выполните модульные тесты со своей сборкой (Вы делаете это так или иначе право? :) или как часть сборки интеграции. Это сохранит Ваш исходный инструмент для очистки, а также Вы не должны будете представлять код, который делает утверждения.

8
ответ дан 8 December 2019 в 18:42
поделиться

Я полагаю, что добавил бы класс Настроек и сохранил бы их там вместо того, чтобы создать новый тип. Класс Настроек может быть поддержан файлом конфигурации приложения, который сделает их легче измениться через изменения конфигурационного файла в случае необходимости. Если Вы не укажете их в конфигурационном файле, тем не менее, то он будет использовать значения, которые Вы устанавливаете как значения по умолчанию.

Я также пошел бы путем модульного теста. Необходимо будет использовать атрибут InternalsVisibleTo в файле Assembly.cs, так как я не думаю, что Настройки могут использоваться вне проекта, если Вы не делаете.

2
ответ дан 8 December 2019 в 18:42
поделиться

Вы действительно хотите эти ключи hardcoded в Ваше приложение? Разве не было бы лучше иметь их в файле конфигурации? Затем, если существует какая-либо проблемная компиляция сообщения, это - просто проблема конфигурации во время выполнения.

1
ответ дан 8 December 2019 в 18:42
поделиться

AdamRalph имеет точку, но встречная точка также работает, если Вы разберетесь в нем во время компиляции, то у Вас никогда не будет проблем конфигурации во время выполнения (предполагающий, что правильные значения не могут измениться),

Вне этого способности времени компиляции C# являются абсолютным Спамом. Их почти ничего, который может быть сделан во время компиляции. Наилучшее имеющееся я известный о являюсь шаблоном where пункт. Если бы я должен был предположить, то я сказал бы, что это - намеренное проектное решение Anders Hejlsberg, поскольку это, кажется, соответствует остальной части языка

Точка Andrew Hare о unittests + отражение почти так же хорошо, как я ожидал бы. co мой рабочий использует это для тестирования того любого класса, который мог использоваться в, особые случаи правильно реализовали некоторый протокол.

1
ответ дан 8 December 2019 в 18:42
поделиться

Если ключи называют согласно тем же правилам как идентификаторы C# или возможно еще больше ограничения, и известны и конечны, Вы могли использовать перечисление:

public enum ResourceKeys
{
    ABC123,
    DEF456
}
1
ответ дан 8 December 2019 в 18:42
поделиться
Другие вопросы по тегам:

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