CSharpCompilation с Roslyn в отдельном домене приложений с GlobalsType

Я пытаюсь запустить пользовательский код C# в отдельном домене приложений с ограниченными разрешениями с глобальным типом, который должен быть разрешен в сценарии. Например,

public class Global {
    public string Name {get; set;}
}

С моим сценарием..

return Name;

должен вернуть значение имени.

Это легко сделать с помощью Roslyn, но оказывается, что Roslyn требует Unrestricted PermissionSet для компиляции и выполнения сценариев, поэтому я не могу просто сделать CSharpScript.Evaluate(...)

Так что я надеюсь скомпилировать скрипт в байтовый массив, используя

CSharpCompilation.CreateScriptCompilation("foo", 
    syntaxTree: CSharpSyntaxTree.ParseText(script, ..), 
    globalsType: typeof(Global), ...)

что я успешно сделал. Я могу вызвать простой скрипт, например, (return "abc";), используя отражение, однако я застрял на том, как я могу передать экземпляр моего объекта Global, чтобы он мог быть разрешен при выполнении.

Это вообще возможно?

0 ответов

Другие вопросы по тегам