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, чтобы он мог быть разрешен при выполнении.
Это вообще возможно?