F#にCLIMutableなる属性が追加さられたみたいです。こいつをつけるとデフォルトコンストラクタとか、プロパティに自動的にgetter/setterつけてくれてDTO作ったりEFで便利かもね!みたいな説明が書いてあるような気がしました。
namespace Hoge open System; // この属性をつけるとレコードにデフォルトコンストラクタとgetter/setterが出来るらしい [<CLIMutableAttribute>] type Person = { Name: string; Age: int; }
C#のプロジェクトから参照するとデフォルトコンストラクタとプロパティへのセッターが使えました
var p = new Hoge.Person(); // OK p.Name = "tanaka"; // OK!
ちなみに、属性を外して実行すると上記コードはエラーになります。
var p = new Hoge.Person("tanaka", 10); // コンストラクタで値を設定したら変更できない p.Name = "kimura"; // NG