我正在尝试在C#中动态设置通用对象中原始类型的值
//Create a new instance of the value object (VO)
var valueObject = Activator.CreateInstance<T>();
//Get the properties of the VO
var props = valueObject.GetType().GetProperties();
//Loop through each property of the VO
foreach (var prop in props)
{
if (prop.GetType().IsPrimitive)
{
var propertyType = prop.PropertyType;
var value = default(propertyType);
prop.SetValue(prop, value);
}
}
问题是我无法使用propertyType
作为类型来获取其默认值。如何将propertyType
设置为default()
可以使用的类型?
答案 0 :(得分:2)
您应将实例传递给SetValue:
prop.SetValue(valueObject, value);
如果要设置默认值,可以使用:
var propertyType = prop.PropertyType;
var defaultValue = Activator.CreateInstance(propertyType);
prop.SetValue(valueObject, defaultValue);