Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can access the Parse methods for a given type based on an instance of Type in C#?

I'm using a DataTable and assigning columns different types. I have a scenario where I'm receiving String data and I want to parse it based on the column's assigned type, but I can't figure out how to get to the parse methods.

Is is it possible to access the Type instance's parse methods in a generic way?

like image 838
Josh Russo Avatar asked Dec 22 '10 14:12

Josh Russo


2 Answers

You're looking for Convert.ChangeType.

like image 125
SLaks Avatar answered Nov 01 '22 19:11

SLaks


If you are using anything more than basic types (that Convert.ChangeType handles quite nicely), the preferred way of doing this is via the TypeConverter:

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

This is convenient because this model can be extended to recognise additional types (or change the implementation for existing types), both at compile-time (adding [TypeConverter(...)]) or at run-time (TypeDescriptor.AddAttributes(...)).

like image 2
Marc Gravell Avatar answered Nov 01 '22 18:11

Marc Gravell