C#: Dynamic parse from System.Type

.net, c#, type-conversion

Solution

`TypeDescriptor` to the rescue!:

var converter = TypeDescriptor.GetConverter(propType);
var result = converter.ConvertFrom(myString);

All primitive types (plus `Nullable<TPrimitive>`, and numerous other built-in types) are integrated into the TypeConverter infrastructure already, and are thus supported 'out-of-the-box'.

To integrate a custom type into the `TypeConverter` infrastructure, implement your own `TypeConverter` and use `TypeConverterAttribute` to decorate the class to be converted, with your new `TypeConverter`

Problem

I have a Type, a String and an Object. Is there some way I can call the parse method or convert for that type on the string dynamically? Basically how do I remove the if statements in this logic ``` object value = new object(); String myString = "something"; Type propType = p.PropertyType; if(propType == Type.GetType("DateTime")) { value = DateTime.Parse(myString); } if (propType == Type.GetType("int")) { value = int.Parse(myString); } ``` And do someting more like this. ``` object value = new object(); String myString = "something"; Type propType = p.PropertyType; //this doesn't actually work value = propType .Parse(myString); ```

Original source