加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何将动态值转换为表达式中的类型值

发布时间:2020-12-15 08:37:34 所属栏目:百科 来源:网络整理
导读:public class Model1 { public String Value { get; set; }}public class Model2 { public dynamic Value { get; set; }}public static ExpressionFuncModel2,Model1 GetExpression() { return f = new Model1 { Value = f.Value };} 我正在编写一个GetExpre
public class Model1 {
    public String Value { get; set; }

}
public class Model2 {
    public dynamic Value { get; set; }
}

public static Expression<Func<Model2,Model1>> GetExpression() {
    return f => new Model1 {
        Value = f.Value
    };
}

我正在编写一个GetExpression(),它将Model2属性转换为Model1.说到动态属性,我尝试Convert.ToString(f.Value)或(String)f.Value但它说

“An expression tree may not contain a dynamic operation”

任何人都知道在表达式中将动态值转换为类型值的正确方法是什么?

解决方法

执行此操作的唯一方法是说服表达式编译器忽略动态:
return f => new Model1
{
    Value = (string)(object)f.Value
};

要么

return f => new Model1
{
    Value = Convert.ToString((object)f.Value)
};

除了其他任何东西,还会有隐式动态转换,这是不受支持的.这只是做了一个强硬的演员.

但是,坦率地说,我想知道f.Value是否具有很大的价值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读