Может ли получить доступ к методам Parse для данного типа на основе экземпляра Type в C #? - PullRequest
5 голосов
/ 22 декабря 2010

Я использую DataTable и назначаю столбцы разных типов.У меня есть сценарий, в котором я получаю String данных, и я хочу проанализировать их на основе назначенного типа столбца, но я не могу понять, как добраться до методов синтаксического анализа.

Is is itможно получить доступ к методам синтаксического анализа экземпляра Type универсальным способом?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Вы ищете Convert.ChangeType.

2 голосов
/ 22 декабря 2010

Если вы используете что-то большее, чем базовые типы (которые Convert.ChangeType обрабатывает довольно хорошо), предпочтительный способ сделать это через TypeConverter:

var converter = TypeDescriptor.GetConverter(type);
object val = converter.ConvertFromString(s); // note various overloads,
                                             // or ConvertFromInvariantString

Это удобно, поскольку эта модель может быть расширена для распознавания дополнительных типов (или изменения реализации для существующих типов) как во время компиляции (добавление [TypeConverter(...)]), так и во время выполнения (TypeDescriptor.AddAttributes(...)).

...