Я работаю над API, который будет считывать строковые значения из файла и разрешать преобразование типов. Мне также нужно предоставить способ «сопоставления» заданных строковых значений с конкретным значением нужного типа. Это будет выглядеть примерно так:
int val = myObject.getValue<int>("FieldName", { { "", 0 }, { "INF", int.MaxValue } });
Имя поля там, чтобы его можно было найти позже, если произойдет ошибка. Это важно только для этого примера, потому что функция должна принимать несвязанный первый параметр.
Однако у меня возникают проблемы при разработке элегантного синтаксиса с безопасным типом для обеспечения этой функциональности (описанное выше, основанное на инициализаторах коллекции, работает, только если я добавлю туда new FieldValueMappingCollection<int> { ... }
).
Итак, варианты, которые мне известны:
myObject.getValue<int>("FieldName", new FieldValueMappingCollection<int> { { "", 0 }, { "INF", int.MaxValue } });
или
myObject.getValue<int>("FieldName", "", 0, "INF", int.MaxValue);
где getValue имеет params object[]
в своей подписи.
Должен быть лучший способ сделать это, верно?