F# F中方法的多个参数#
我有一个用F#编写的类,我用C#使用它,它定义了一个方法F# F中方法的多个参数#,f#,F#,我有一个用F#编写的类,我用C#使用它,它定义了一个方法Render: member this.Render template (context: IContext) = let tokens = Lexer.tokenize template let parser = new DefaultParser([for filter in _filters -> filter]) let resp = new StringBuilder() for node
Render
:
member this.Render template (context: IContext) =
let tokens = Lexer.tokenize template
let parser = new DefaultParser([for filter in _filters -> filter])
let resp = new StringBuilder()
for node in parser.Parse tokens None do
ignore <| resp.Append(node.render context)
resp.ToString()
然后签名就变成了您所期望的-string->IContext->string
,其内容为“Render
获取一个字符串,然后是一个IContext
并生成一个字符串”
有没有办法使成员的行为类似于let绑定?这会导致从C#使用此成员时出现问题,因为签名变成了Render(string,FastFunc)
,这是不可过度使用的。如果要向C#公开,应以元组样式编写:
> type Foo =
- member this.Bar (param1, param2) = param1 + param2;;
type Foo =
class
member Bar : param1:int * param2:int -> int
end
这将公开一个普通的.NET样式的方法。如果要公开给C#,应该以元组样式编写:
> type Foo =
- member this.Bar (param1, param2) = param1 + param2;;
type Foo =
class
member Bar : param1:int * param2:int -> int
end
这将公开一个普通的.NET样式的方法。请确保为元组中的对象提供名称。对不起,这是一个稍微不同的问题。您的建议适用于具体成员,但不适用于在f#中定义然后在c#中实现的接口。这些被理解为元组,请确保您为元组中的对象提供名称。对不起,这是一个稍微不同的问题。您的建议适用于具体成员,但不适用于在f#中定义然后在c#中实现的接口。它们被认为是元组