Roslyn,通过hostObject传值;使用Roslyn.Scripting.CSharp;publicclassShippingService{publicclassShippingDetails//我要发送的类{publicdecimaltotal{get;放;}publicintquantity{get;放;}publicstringdestination{get;放;}}publicstaticstringShippingCost(decimaltotal,intquantity,stringdestination){vardetails=newShippingDetails{total=total,quantity=quantity,destination=destination};尝试{ScriptEngineroslynEngine=newScriptEngine();Roslyn.脚本。会话会话=roslynEngine.CreateSession(详细信息);session.AddReference(details.GetType().Assembly);session.AddReference("System.Web");session.ImportNamespace("系统");session.ImportNamespace("System.Web");变种结果=会话。执行(“详细信息。目的地”);返回结果;}赶上(异常e){返回e.Message;}返回””;当我调用函数目标时,例如“法国”,我应该在结果中得到这个值,但我错了:Roslyn.Compilers.CompilationErrorException:(1,1):errorCS0103:Thename'details'doesnotexistinthecurrentcontext错误消息完全正确。当你有一个宿主对象时,你不能通过在你的方法中保存它的局部变量的名称来访问它(这将如何工作?ScriptEngine将如何学习名称?)。相反,您可以直接访问宿主对象,就像您正在编写该类型的成员方法一样(但不完全是,您不能使用this或访问非公共成员)。这意味着您应该只写:session.Execute("destination")顺便说一句,根据.Net命名指南,公共属性的名称应该以大写字母开头(例如Destination)。以上就是C#学习教程:Roslyn,通过hostObject传值分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
