转换枚举?诠释?使用反射时失败

使用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,

}


红颜莎娜
浏览 131回答 1
1回答

拉风的咖菲猫

试试这个: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?。
打开App,查看更多内容
随时随地看视频慕课网APP