我正在嘗試將C#腳本集成到我的應用程序中。我正在使用全局變量對象來爲我的腳本提供各種數據。在CSharpScript中訪問腳本類中的全局變量
public class Globals
{
public int X;
public int Y;
}
但是似乎全局僅在腳本的「全局」級別訪問。這工作:
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
Console.WriteLine(CSharpScript.EvaluateAsync<int>( "X + Y", globals: new Globals { X = 1, Y = 2 }).Result);
當我嘗試腳本類中訪問全局我總是異常結束,24):錯誤CS0120:一個對象引用是所必需的非靜態字段,方法或屬性「Globals.Y」
預計全局變量只能在腳本的「全局」級別上工作嗎?從異常消息看來,引擎正確識別屬於Globals
對象的Y
屬性。
我使用Microsoft.CodeAnalysis.CSharp.Scripting V1.1.1
腳本結束後訪問全局變量時沒有問題。我在腳本本身中訪問全局變量時遇到問題。由於上述異常,腳本既不能通過RunAsync也不能運行,也不能運行EvaluateAsync。 – manison