在Roslyn中使用脚本API中的扩展方法会引发异常

时间:2017-10-31 11:31:02

标签: c# dynamic roslyn

我试图执行以下操作:

ScriptOptions optins = ScriptOptions.Default
     .AddReferences(typeof(HelperExtensionMethods).Assembly,...);

var globals = new ParamsVM { X = var1, Y = var2 };

var task = CSharpScript.EvaluateAsync(
    "X.MyExtensionMethod() == Y.AnotherExtensionMethod()",
    optins,
    globals
    );

task.Wait();
var res = task.Result;

我们认为XY的类型为T1 ... HelperExtensionMethods定义如下:

public static class HelperExtensionMethods
{
   public static string MyExtensionMethod(this T1 src) { ... }
   public static string AnotherExtensionMethod(this object src) { ... }
}

EvaluateAsync抛出异常说:

  

错误CS1061:' T1'不包含' MyExtensionMethod'的定义没有扩展方法' MyExtensionMethod'接受第一个类型' T1'可以找到(你是否错过了使用指令或汇编引用?)'

HelperExtensionMethods课程添加到optins我尝试WithImportsAddImports但没有运气的正确方法是什么。

由于某些限制,我也从Roslyn库移至DynamicExpresso

0 个答案:

没有答案