有没有办法在运行时为PexChoose指定返回类型?例如PexChoose.Value(名称,类型)?
这对于制作根据运行时约束生成不同类型值的通用模型非常有用。
答案 0 :(得分:0)
您可以构建自己的帮助程序类,它将通过反射调用泛型版本。
例如,要创建PexChoose.Value(string name)
public static class MyPexChoose
{
public static object Value(Type myType, string name)
{
// Find the PexChoose.Value() method which has a single string parameter
MethodInfo method = typeof(PexChoose).GetMethod("Value", new Type[1] {typeof(string)});
// Make and invoke the generic version of it
MethodInfo generic = method.MakeGenericMethod(myType);
return generic.Invoke(typeof(PexChoose), new object[1] { name });
}
}
然后是电话
MyPexChoose(typeof(DateTime), "MyChosen");
相当于
PexChoose<DateTime>("MyChosen");