CSharpScript和动态对象

时间:2019-05-09 23:58:55

标签: c# roslyn

我的应用程序中有一个小脚本引擎,当全局上下文包含来自数据库的数据(使用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可以工作。

我很困惑。

0 个答案:

没有答案