dotnet/roslyn

Improve error message when accessing globals within a class in a C# script

Open

#7 758 ouverte le 3 janv. 2016

Voir sur GitHub
 (3 commentaires) (0 réactions) (0 assignés)C# (4 257 forks)batch import
Area-InteractiveInteractive-ScriptingLogichelp wanted

Métriques du dépôt

Stars
 (20 414 stars)
Métriques de merge PR
 (Merge moyen 6j 17h) (256 PRs mergées en 30 j)

Description

Having Globals defined as

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

the following works as expected

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

while the following

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);

fails with exception

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

Expected behavior: The second sample executes successfully and returns (int)3.

Guide contributeur