¿Convertir variable a tipo solo conocido en tiempo de ejecución?

foreach (var filter in filters) { var filterType = typeof(Filters); var method = filterType.GetMethod(filter, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Static); if (method != null) { var parameters = method.GetParameters(); Type paramType = parameters[0].ParameterType; value = (string)method.Invoke(null, new[] { value }); } } 

¿Cómo puedo lanzar value a paramType ? value es una string , paramType probablemente solo sea un tipo básico como int , string o quizás float . Estoy de acuerdo con que arroje una excepción si no es posible la conversión.

Los tipos que está utilizando implementan IConvertible . Como tal, puedes usar ChangeType .

  value = Convert.ChangeType(method.Invoke(null, new[] { value }), paramType); 

Puedes ir dynamic; por ejemplo:

 using System; namespace TypeCaster { class Program { internal static void Main(string[] args) { Parent p = new Parent() { name = "I am the parent", type = "TypeCaster.ChildA" }; dynamic a = Convert.ChangeType(new ChildA(p.name), Type.GetType(p.type)); Console.WriteLine(a.Name); p.type = "TypeCaster.ChildB"; dynamic b = Convert.ChangeType(new ChildB(p.name), Type.GetType(p.type)); Console.WriteLine(b.Name); } } internal class Parent { internal string type { get; set; } internal string name { get; set; } internal Parent() { } } internal class ChildA : Parent { internal ChildA(string name) { base.name = name + " in A"; } public string Name { get { return base.name; } } } internal class ChildB : Parent { internal ChildB(string name) { base.name = name + " in B"; } public string Name { get { return base.name; } } } }