【发布时间】:2017-07-10 02:47:14
【问题描述】:
我想为Object 中的所有decimal 字段设置默认值。方法如下:
private Type SetAllFieldsAsDefault(Type register)
{
var fields = register.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var field in fields)
{
if (field.FieldType != typeof(double)) continue;
field.SetValue(field, 0);
}
return register;
}
在我尝试投射到 myType 之后,但它不起作用
myType = (MyType )SetAllFieldsAsDefault(myType.GetType());
我该怎么做?
【问题讨论】:
-
你没有给它设置值的实际对象,你只是返回一个
Type。它不能被投射到你拥有的实际对象中。SetValue应该将实际对象作为第一个参数。 -
我不知道这段代码要做什么。您不能在类型上设置实例值。而
field.SetValue(field, 0)是完全错误的。见the documentation
标签: c# reflection types casting