かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

CLIMutable属性つけると便利らしい?

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