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);
Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia.
C adalah huruf ketiga dalam alfabet Latin. Dalam bahasa Indonesia, huruf ini disebut ce (dibaca [tʃe]).
Bahasa pemrograman C ini dikembangkan antara tahun 1969 – 1972 oleh Dennis Ritchie. Yang kemudian dipakai untuk menulis ulang sistem operasi UNIX. Selain untuk mengembangkan UNIX, bahasa C juga dirilis sebagai bahasa pemrograman umum.
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
This should work for all primitive types, and for types that implement IConvertible
public static T ConvertTo<T>(object value) { return (T)Convert.ChangeType(value, typeof(T)); }
EDIT : actually in your case, you can't use generics (not easily at least). Instead you could do that :
object value = Convert.ChangeType(myString, propType);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With