c# – 用测试数据填写一个类

我正在使用反射来为给定的C#类填充测试数据

public object CreateObj(Type type)
{
    var obj = Activator.CreateInstance(type);
    var fields = type.GetFields();
    foreach (var field in fields)
    {
        field.SetValue(obj, GetRnd(field.FieldType));
    }

    return obj;
}

GetRnd()函数根据字段的类型设置值:

private object GetRnd(Type type)
{
    if (type == typeof(int))
    {
        return 4;
    }
    else if (type == typeof(string))
    {
        return "text";
    }
    else
    {
        throw new Exception();
    }

}

只要我传递给CreateObj()一个合适的类,这就可以工作.即使是基本类型(字符串,整数等等),我也想让它工作.
到现在为止,当我传递一个简单的“int”时,我得到一个“SetType():无法设置常量字段”异常.

最佳答案 检查类型是否为值’Type.IsValue’,这意味着类型传入参数是标量类型.

点赞