- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过 hostObject 发送一个类,但显然它不想工作:
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;
using Roslyn.Scripting;
using Roslyn.Scripting.CSharp;
public class ShippingService
{
public class ShippingDetails//class that I want to send
{
public decimal total { get; set; }
public int quantity { get; set; }
public string destination { get; set; }
}
public static string ShipingCost(decimal total, int quantity, string destination)
{
var details = new ShippingDetails
{
total = total,
quantity = quantity,
destination = destination
};
try
{
ScriptEngine roslynEngine = new ScriptEngine();
Roslyn.Scripting.Session session = roslynEngine.CreateSession(details);
session.AddReference(details.GetType().Assembly);
session.AddReference("System.Web");
session.ImportNamespace("System");
session.ImportNamespace("System.Web");
var result = session.Execute("details.destination");
return result;
}
catch (Exception e)
{
return e.Message;
}
return "";
}
}
当我调用函数目标时,例如“法国”,我应该在结果中得到这个值,但我犯了错误:
Roslyn.Compilers.CompilationErrorException: (1,1): error CS0103: The name 'details' does not exist in the current context
最佳答案
错误信息完全正确。当你有一个宿主对象时,你不能通过在你的方法中保存它的局部变量的名称来访问它(那将如何工作?ScriptEngine
将如何学习该名称?)。
相反,您可以直接访问宿主对象,就好像您正在编写该类型的成员方法一样(但不完全是,您不能使用this
或访问非公共(public)成员)。
这意味着你应该只写:
session.Execute("destination")
顺便说一句,根据 .Net 命名指南,公共(public)属性的名称应以大写字母开头(例如 Destination
)。
关于c# - Roslyn,通过 hostObject 传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19272764/
我们目前使用 IronPython 作为脚本语言,以允许我们的业务用户配置我们应用程序的大部分,并且我们正在评估在 Roslyn 发布后添加 C# 作为脚本语言的可能性。对于 IronPython,我
我试图通过 hostObject 发送一个类,但显然它不想工作: using Roslyn.Compilers; using Roslyn.Compilers.CSharp; using Roslyn
我正在学习如何使用 react-native(Android)实现 Firestore。然后,我找到了 'react-native-firebase' 并陷入了这个异常。 Error:Exceptio
将我的 React Native 应用程序更新为 React Native 0.59 后,我开始在 Debug模式下运行我的应用程序 (react-native run-android) 或在生成包并
我们的项目需要能够有一个简单的业务规则,我们的客户可以在 Visual basic 中编写脚本。而我们的主程序是用 C# 编写的 客户想要执行的脚本可能是这样的(我正在考虑最简单的可能情况) var
我们已经部署了一个 WSO2 API 管理器来公开系统的 API。当我们发布带有 https 目标端点的 API 时(例如:https://abc.d.e :),请求失败并出现以下异常。 TID: [
我是一名优秀的程序员,十分优秀!