我的应用程序中有一个小脚本引擎,当全局上下文包含来自数据库的数据(使用Dapper)时,它能够很好地评估表达式。例如
Date.Format(Data.CreatedAt, "h:mm tt")
但是,如果数据作为动态对象(从队列中的json消息)传递,则评估将失败,并显示以下信息:
error CS0656: Missing compiler required member
上下文如下:
public class ExpressionContext
{
public dynamic Data { get; private set; }
public ExpressionContext(dynamic data)
{
Data = data;
}
}
如果我将数据更改为对象而不是动态的,则会出现此错误:
error CS1061: 'object' does not contain a definition for 'CreatedAt'
and no accessible extension method 'CreatedAt' accepting a first argument
of type 'object' could be found (are you missing a using directive or an
assembly reference?)
对我来说更有意义。
因此CSharpScript似乎无法评估动态对象-但是,DapperRow可以工作。
我很困惑。