在我正在查看的DotNetYaml示例代码中,有一个C#构造:
var deserializer = new Deserializer(namingConvention: new CamelCaseNamingConvention());
var order = deserializer.Deserialize<Order>(input);
等效的F#代码是什么?我尝试过
let deserializer = new Deserializer(namingConvention=new CamelCaseNamingConvention())
deserializer.Deserialize<Meta>(input)
答案 0 :(得分:4)
如果您有一个定义可选参数的C#库,则可以使用问题中使用的语法。为了快速说明这种情况,我将以下C#代码编译为库:
using System;
namespace Demo {
public class MyClass {
public static void Foo(int first, string second = "foo", string third = "bar") { }
}
}
您可以按如下所示在F#中引用并使用它:
open Demo
MyClass.Foo(1, third="hi")
我尝试使用YamlDotNet
来执行此操作,我猜这是您正在使用的库,但是我收到一个错误,指出Deserializer
类没有将namingConvention
作为论据,所以我的猜测是您正在使用的库版本可能与您所想的不同(或者,我对正在使用的库的猜测是错误的...)。