Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

ReactiveProperty v0.4.1.0をリリースしました

$
0
0

NuGetからさくっとインストールできるはずです。

変わった点の説明

ReactivePropertyには、値の検証を行う方法がいくつかります。

  • SetValidateNotifyErrorメソッドでラムダ式内で値の検証ロジックを書く方法
  • SetValidateAttributeメソッドでSystem.ComponentModel.DataAnnotationsの属性べーうでの検証を行うようにする方法

PCLに移植する前のReactivePropertyでは、最初のメソッドがINotifyDataErrorInfo、2つ目のメソッドをIDataErrorInfoで管理していました(と思います)。PCLにはIDataErrorInfoが無くてINotifyDataErrorInfoに一本化されたため、ReactivePropertyをPCLにするタイミングで、両方ともそっちに寄せました。

できなくなってたこと

管理場所が別だったのでSetValidateNotifyErrorとSetValidateAttributeを両方呼ぶことで属性での検証+ラムダ式での検証を両方走らせることが出来てましたが、一本化してしまったため、両方を同時に指定することができなくなってました…。あとからSetした検証方法のみ実行されるようになってました。

対処するための追加したメソッド

これまでの、SetValidateNotifyErrorメソッドとSetValidateAttributeメソッドに加えて、AddValidateNotifyErrorメソッドとAddValidateAttributeメソッドを追加して、1つのReactivePropertyに対して複数の検証方法を追加できるようにしました。

publicclass ValidationViewModel
{
    [StringLength(5, ErrorMessage = "Length < 5")]
    public ReactiveProperty<string> ValidationBoth { get; private set; }

    public ValidationViewModel()
    {
        // SetValidateAttributeに、AddValidateNotifyErrorでラムダ式での検証ロジックを追加
        ValidationBoth = new ReactiveProperty<string>()
            .SetValidateAttribute(() => ValidationBoth)
            .AddValidateNotifyError((string s) => string.IsNullOrEmpty(s) ? 
                "required" : 
                s.Cast<char>().All(Char.IsLower) ? 
                    null :"not all lowercase");
    }
}

とりあえず一安心。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>