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

前端之家收集整理的这篇文章主要介绍了c# – 如何将动态值转换为表达式中的类型值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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是否具有很大的价值.

猜你在找的C#相关文章