gpt4 book ai didi

c# - 在 CSharpScript 的脚本类中访问全局变量

转载 作者:行者123 更新时间:2023-11-30 17:40:19 24 4
gpt4 key购买 nike

我正在尝试将 C# 脚本集成到我的应用程序中。我正在使用 globals 对象为我的脚本提供各种数据。

public class Globals
{
public int X;
public int Y;
}

然而,全局变量 似乎只能在脚本的“全局”级别上访问。这有效:

Console.WriteLine(CSharpScript.EvaluateAsync<int>(
"X + Y",
globals: new Globals { X = 1, Y = 2 }).Result);

当我尝试访问脚本类中的全局变量时,我总是以异常结束:

Console.WriteLine(CSharpScript.EvaluateAsync<int>(
@"class Foo
{
public int Bar()
{
return X + Y;
}
}

var foo = new Foo();
foo.Bar()", globals: new Globals { X = 1, Y = 2 }).Result);

Microsoft.CodeAnalysis.Scripting.CompilationErrorException: (5,24): error CS0120: An object reference is required for the non-static field, method, or property 'Globals.Y'

globals 是否预期只能在脚本的“全局”级别上工作?从异常消息看来,引擎似乎正确识别了属于 Globals 对象的 Y 属性。

我正在使用 Microsoft.CodeAnalysis.CSharp.Scripting v1.1.1

最佳答案

This behavior is by design :

Global variables are only accessible in top-level statements and methods, not in classes.

关于c# - 在 CSharpScript 的脚本类中访问全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426226/

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