gpt4 book ai didi

c# - 在 Roslyn 中使用 System.Dynamic

转载 作者:IT王子 更新时间:2023-10-29 03:36:42 27 4
gpt4 key购买 nike

我修改了昨天发布的新版 Roslyn 附带的示例以使用 dynamic 和 ExpandoObject,但我收到一个编译器错误,我不确定如何修复。错误是:

(7,21): error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'

你不能在新编译器中使用动态吗?我怎样才能解决这个问题?这是我更新的示例:

[TestMethod]
public void EndToEndCompileAndRun()
{
var text = @"using System.Dynamic;
public class Calculator
{
public static object Evaluate()
{
dynamic x = new ExpandoObject();
x.Result = 42;
return x.Result;
}
}";

var tree = SyntaxFactory.ParseSyntaxTree(text);
var compilation = CSharpCompilation.Create(
"calc.dll",
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary),
syntaxTrees: new[] {tree},
references: new[] {new MetadataFileReference(typeof (object).Assembly.Location), new MetadataFileReference(typeof (ExpandoObject).Assembly.Location)});

Assembly compiledAssembly;
using (var stream = new MemoryStream())
{
var compileResult = compilation.Emit(stream);
compiledAssembly = Assembly.Load(stream.GetBuffer());
}

Type calculator = compiledAssembly.GetType("Calculator");
MethodInfo evaluate = calculator.GetMethod("Evaluate");
string answer = evaluate.Invoke(null, null).ToString();

Assert.AreEqual("42", answer);
}

最佳答案

我认为您应该引用 Microsoft.CSharp.dll 程序集

关于c# - 在 Roslyn 中使用 System.Dynamic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22864790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com