В моем приложении есть небольшой движок сценариев, который может очень хорошо оценивать выражения, когда глобальный контекст содержит данные из базы данных (используя 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 работает.
Я в замешательстве.