かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

C# vNextで、ReactivePropertyはすっきり書けるのか?

コンストラクタが長くなることで定評のある?ReactivePropertyですが、C# vNextでプロパティ初期化のところに書けば綺麗に書けるんじゃないか!?という淡い期待を持ってる人は少なからずいると思います。

残念ながら・・・

class Person
{
    public ReactiveProperty<string> Name { get; private set; } = new ReactiveProperty<string>();

    // コンパイルエラー
    public ReactiveProperty<string> Output { get; private set; } = Name
        .Select(s => s.ToUpper())
        .ToReactiveProperty();
}

理由はエラーメッセージの通り。

A field initializer cannot reference the non-static field, method, or property 'ConsoleApplication5.Person.Name'

初期化の順番が決まらないから仕方ないっちゃぁ仕方ないですね。

C# vNextの試し方

じんぐるさんのBlogを参照しましょう!

一度設定しておいて、ファイルメニューからプロジェクトテンプレートとしてエクスポートしておくと捗ります。