将variables转换为仅在运行时已知的types?

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 }); } } 

我怎样才能将value赋予paramTypevalue是一个stringparamType可能只是一个基本的types,如intstringfloat 。 如果没有转换是可能的,我很酷,抛出一个exception。

你正在使用的types都实现IConvertible 。 这样你可以使用ChangeType

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

你可以变得有活力 例如:

 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; } } } }