2021-03-31 21:19:13 +00:00
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace Elsa.Scripting.JavaScript.Services
|
|
|
|
|
{
|
|
|
|
|
public class PlainObjectResultConverter : IConvertsJintEvaluationResult
|
|
|
|
|
{
|
2021-06-19 09:51:06 +00:00
|
|
|
private readonly IConvertsJintEvaluationResult _wrapped;
|
2021-03-31 21:19:13 +00:00
|
|
|
|
|
|
|
|
public object? ConvertToDesiredType(object? evaluationResult, Type desiredType)
|
|
|
|
|
{
|
2021-06-19 09:51:06 +00:00
|
|
|
if (evaluationResult == null)
|
|
|
|
|
return null;
|
|
|
|
|
|
2021-03-31 21:19:13 +00:00
|
|
|
if(desiredType == typeof(object))
|
|
|
|
|
return evaluationResult;
|
|
|
|
|
|
2021-06-19 09:51:06 +00:00
|
|
|
if (evaluationResult.GetType() == desiredType || desiredType.IsInstanceOfType(evaluationResult))
|
2021-04-09 20:24:53 +00:00
|
|
|
return evaluationResult;
|
|
|
|
|
|
2021-06-19 09:51:06 +00:00
|
|
|
return _wrapped.ConvertToDesiredType(evaluationResult, desiredType);
|
2021-03-31 21:19:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public PlainObjectResultConverter(IConvertsJintEvaluationResult wrapped)
|
|
|
|
|
{
|
2021-06-19 09:51:06 +00:00
|
|
|
this._wrapped = wrapped ?? throw new ArgumentNullException(nameof(wrapped));
|
2021-03-31 21:19:13 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|