我可以看到如果我创建一个新的匿名记录,例如:
let myRecord = {| SomeInteger = 5 |}
如果它暴露给C#,那么我就可以使用"."进入它。
var someInteger = myRecord.SomeInteger;
如果我有一个F#函数,比如说:
```fsharp let add x y = x + y ```
该怎么办呢?
let unwrap (record : {| SomeInteger : int |}) = record.SomeInteger
如果这个函数暴露给了C#,我该如何在C#中实例化一个参数并调用它呢?我尝试过直接使用C#的匿名类型放在那里,就像这样。
var unwrapped = unwrap(new { SomeInteger = 5 });
但是这段代码无法编译。我在该功能的RFC文档中看到说,"此功能必须与C#匿名对象(来自C# 3.0)实现兼容性",但没有具体说明哪些方面需要兼容。这个功能是否被支持?
myRecord
生成的类型。这应该告诉您有关实现兼容性的方式的很多信息。 - madreflectionvar
将其绑定到C#中的变量并访问其字段。 - TeaDrivenDev