我正在使用反射来为给定的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’,这意味着类型传入参数是标量类型.