C # в VS2008, .NET 2.0, приложение Winforms.
Я создал небольшой класс, конструктор которого принимает ссылку на объект (который состоит из множества различных типов полей данных) и строку «ключ», которая содержит имя одного из членов строки в указанном объекте это должно быть обновлено.
В этом небольшом классе у меня есть оператор switch (), который проверяет каждое возможное допустимое значение строки «ключ» (которая может быть действительно типом enum, но неважно) и прямо там I пытаюсь назначить одну отдельную внутреннюю строковую переменную, чтобы она указывала на соответствующую строковую переменную в указанном объекте. Позже другой код обновляет эту отдельную внутреннюю переменную, и мне нужно, чтобы соответствующая переменная в указанном объекте была обновлена для соответствия.
В C я бы написал что-то вроде:
char *p;
if (strcmp(pszKeyName, "FieldOne") == 0) {
p = struct.string1;
} else if (strcmp(pszKeyName, "FieldTwo") == 0) {
p = struct.string2;
} else if...
(Простите за синтаксис; никогда не очень хорошо разбирался в указателях.) Идея состоит в том, что я мог бы тогда просто strcpy () что-то добавить в 'p' и вуаля, соответствующая строковая переменная (string1, string2 и т. Д.) В структуре быть обновлен, чтобы соответствовать.
Как я могу сделать это в C # .NET 2.0?
В остальном это очень простой код, и я не стремлюсь ничего переклассифицировать, переопределить, получить или заново изобрести. По сути, это простой класс, представляющий один текстовый вопрос и пару флажков Да / Нет. Он используется в Winforms TabControl / TabPage для отображения метки с некоторым предопределенным текстом и позволяет пользователю нажимать «да» или «нет», чтобы ответить на заданный текст вопроса. Класс представляет только одну группу элементов управления Label / CheckBox / CheckBox; есть список <>, созданный с помощью кода вызова. (Да, я бы использовал пользовательский элемент управления для инкапсуляции трех, но вертикальная высота текста Label и, следовательно, его местоположение, неизвестны во время разработки. Это все же, возможно, стоит изучить.)
В любом случае, во время выполнения вызывающий код вычисляет, сколько из этих вопросов потребуется, основываясь на других настройках в том же большом объекте, на который ссылаются, и он создает этот маленький класс несколько раз по мере необходимости. У меня есть все экранное позиционирование и даже обработчики ..._ CheckedChanged () срабатывают при проверке CheckBox.
Последняя оставшаяся проблема заключается в том, что когда вызываются мои обработчики CheckBox «да» и «нет», они не знают, в какой из нескольких элементов данных ссылочного объекта записать слово «да» или «нет».