かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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を参照しましょう!

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