かずきのBlog@hatena

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

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

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