PexChoose非通用方法

时间:2011-10-03 10:15:41

标签: pex pex-and-moles

有没有办法在运行时为PexChoose指定返回类型?例如PexChoose.Value(名称,类型)?

这对于制作根据运行时约束生成不同类型值的通用模型非常有用。

1 个答案:

答案 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");