我试图访问南希的动态属性。在Nancy中,如果在查询中传递参数,它将作为动态属性。我该如何访问它。
关于这一点有很多讨论/问题,但每一个地方,首先是创造动态然后消费它。我如何消费已经创建的内容?
以下是两个代码段
public class ParameterModule : NancyModule
{
public ParameterModule():base("/{about}")
{
this.Get["/"] = (parameters) => "Hello About" + parameters.about;
}
}
和F#
type ParameterModule() as this =
inherit NancyModule("/{about}")
do this.Get.["/"] <- fun parameters -> "Hello" + parameters?("about") :> obj
我无法访问,因为对象没有该属性。
如果需要进一步的信息,请告诉我。
答案 0 :(得分:10)
F#动态运算符(?)
允许您在不使用引号的情况下传递字符串参数,实现与C#dynamic类似的语法,但您需要首先为具体用例定义它,编译器只提供语法。试试这个:
let (?) (parameters:obj) param =
(parameters :?> Nancy.DynamicDictionary).[param]
type ParameterModule() as this =
inherit NancyModule("/{about}")
do this.Get.["/"] <- fun parameters -> sprintf "Hello %O" parameters?about :> obj
答案 1 :(得分:1)
我通过类型转换为dynamicdictionary解决了问题。如果有更好的方法请告诉我。将问题保持开放直到那时......
以下是解决问题的代码
type ParameterModule() as this =
inherit NancyModule("/{about}")
do this.Get.["/"] <- fun parameters -> (parameters :?> Nancy.DynamicDictionary).["about"].ToString() :> obj
答案 2 :(得分:1)
也许这可以让你开始http://hubfs.net/topic/None/74053