Kur*_*oro 6 c# linq expression
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
};
}
Run Code Online (Sandbox Code Playgroud)
我正在写一个GetExpression()
将Model2
属性转换为Model1
.谈到动态财产,我尝试Convert.ToString(f.Value)
或者(String)f.Value
说它
"表达式树可能不包含动态操作"
任何人都知道在表达式中将动态值转换为类型值的正确方法是什么?
做到这一点的唯一方法是说服表达式编译器忽略dynamic
:
return f => new Model1
{
Value = (string)(object)f.Value
};
Run Code Online (Sandbox Code Playgroud)
或者
return f => new Model1
{
Value = Convert.ToString((object)f.Value)
};
Run Code Online (Sandbox Code Playgroud)
对于其他任何东西,都会有隐式动态转换,这是不受支持的。这只是进行了硬转换。
f.Value
然而,坦率地说,我想知道,成为dynamic
第一名是否有多大价值。