CSharpScript DynamicClass 作为全局变量得到 CS0234 错误

问题描述

我正在尝试构建灵活的脚本评估器,它可以接收全局变量的动态列表。 我正在使用 DynamicLinq lib 中的 Dynamicclass 来构建全局对象。但是我遇到了 CS0234 错误

命名空间“System.Linq”中不存在类型或命名空间名称“Dynamic”

我的问题是我的全局类型实例是动态生成的,我无法将动态程序集添加到引用中。 InteractiveAssemblyLoader 也不起作用。

我知道 DynamicExpression-s,但我正在努力寻找纯粹的解决方案。

        var type = DynamicclassFactory.CreateType(
        new List<DynamicProperty>()
        {
            new DynamicProperty("X",typeof(int)),new DynamicProperty("Y",typeof(int))
        });

        var data = Activator.CreateInstance(type) as Dynamicclass;
        data.SetDynamicPropertyValue("X",1);
        data.SetDynamicPropertyValue("Y",2);
        
        using (var loader = new InteractiveAssemblyLoader())
        {
            loader.RegisterDependency(type.Assembly);
            loader.RegisterDependency(typeof(ExpandoObject).Assembly);
            var script = csharpscript.Create<int>("X + Y",ScriptOptions.Default
                    .AddReferences("System.Linq")
                    .AddReferences("System.Linq.Expressions")
                    .AddReferences("System.Linq.Dynamic.Core.Dynamicclasses")
                    .AddImports("System.Linq")
                    .AddImports("System.Dynamic")
                    .AddImports("System.Linq.Dynamic.Core.Dynamicclasses"),globalsType: type,assemblyLoader: loader 
                );
            var t = script.Compile();
            var p = await script.RunAsync(data);
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)