У меня есть ситуация, которая может показаться нелепой, но я не смог найти достаточно хорошего решения. Чтобы упростить задачу, проблема заключается в следующем: предположим, что у вас есть объект, такой как «Производитель», у которого есть свойство названия страны (например, car.Manufacturer.CountryName), и вы хотите быть уверены, что у свойства названия страны не может быть дубликатов, орфографических ошибок или других ошибок.
Это в основном строковое свойство, но строка может быть чем-то, что мне не нужно. Объект кажется излишним, а перечисление означает, что мне нужно перекомпилировать, если нужно добавить новые страны или изменить существующие.
Я мог бы легко контролировать это в графическом интерфейсе, но мне нужно контролировать это в коде приложения. Таким образом, у меня есть объект со свойством, которое может быть строкой, объектом или перечислением (или другим), и я не могу решить, какой использовать. Итак, мои варианты примерно такие:
a) Управляйте этим в графическом интерфейсе и не проверяйте это в коде приложения, рискуя получить «нелегальные» названия стран.
b) Создайте объект (Страна) и используйте его, который является избыточным и усложняет код, но я полностью контролирую дубликаты и все такое.
в) Используйте перечисление и надейтесь, что мне не придется перекомпилировать слишком часто. Это простое и эффективное, но статичное решение.
d) Использовать внутренний список строк допустимых названий стран, указав CountryName в качестве строкового свойства и убедиться, что оно проверено на соответствие этой строке. Я получаю подтверждение, и CountryName - это простая строка, но что, если я изменю эту внутреннюю строку с допустимыми названиями стран? После того, как я должен сделать код, он снова проверяет все объекты-изготовители в программе, чтобы удостовериться, что у них все еще есть правильные имена.
Я не совсем уверен, насколько важно иметь действительные названия стран, но чем больше я об этом думаю, тем больше понимаю, что нахожусь в серой зоне. Объект или структура слишком много, перечисление слишком статично, строка слишком проста.
Я мог бы сильно усложнять ситуацию, но мне бы очень хотелось знать, что делать, или, скорее, как думать, когда вы попадаете в эту серую зону объекта против строки против перечисления.
К счастью, ваш!
Hal