使用int?
转换成功。
使用反射进行转换时失败。
如何使用反射将值成功分配enum?
给属性int?
?
static void Main(string[] args)
{
Dc dc = new Dc { Solution = Solution.Upgrade };
Model model = new Model { };
//assign by reflection
var psolution = model.GetType().GetProperty("Solution");
//psolution.SetValue(model, dc.Solution); //this fail
model.Solution = (int?)dc.Solution; //this success
psolution.SetValue(model, Convert.ChangeType(dc.Solution, psolution.PropertyType)); //this fail
}
class Dc
{
public Solution? Solution { get; set; }
}
class Model
{
public int? Solution { get; set; }
}
enum Solution
{
Upgrade = 1,
Discard = 2,
}
试试这个:
Type t = Nullable.GetUnderlyingType(psolution.PropertyType) ?? psolution.PropertyType;
object safeValue = (dc.Solution == null) ? null : Convert.ChangeType(dc.Solution, t);
property.SetValue(model, safeValue, null);
您需要获取的基础类型参数Nullable<T>
才能设置的值int?
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句