thisブログ記事に記載されている方法を使用してC#パラメータの検証をセットアップしました。私がしようとすると、彼らはより少ないかゼロに等しいかどうかを判断するためにints
ための拡張メソッドを追加するとき、しかしジェネリックスでC#メソッドのパラメータを確認する
public static ArgumentEx<T> NotEmptyString<T>(this ArgumentEx<T> arg) where T : class
{
if (string.IsNullOrWhiteSpace(arg.Value.ToString()))
{
throw new ArgumentException(string.Format("{0} cannot be empty.", arg.Name));
}
return arg;
}
:私はそれをすべてのベースに、この拡張メソッドを設定しているstrings
いるためすべてが素晴らしい作品このような:
public static ArgumentEx<T> NotZeroOrLess<T>(this ArgumentEx<T> arg) where T : class
{
if (Convert.ToInt32(arg.Value.ToString()) <= 0)
{
throw new ArgumentException(string.Format("Please make sure {0} is greater than zero.", arg.Name));
}
return arg;
}
私は順番に参照型である必要があります試してみて、そうuserId.RequireThat("userId").NotZeroOrLess();
型「int型」のようにそれを呼び出すときに、私はこのエラーを取得します私は
name
がstring
あるようname.RequireThat("name").NotEmptyString();
は、正常に動作やって、言ったようにジェネリック型またはメソッド
に パラメータ「T」としてそれを使用します。私はgenericのタイプを次のように指定しようとしました:
userId.RequireThat<int>("userId").NotZeroOrLess();
私は同じエラーが発生します。私はジェネリック医薬品にあまり精通していないと認めなければならない。誰かがこのエラーが発生している理由を説明することはできますか?早めにありがとう。
それはそうしています。トーマスが投稿したリンクを読んだら、これらのことをより完全に理解しています。しかし、これを取り除くことで、将来私が気づくべき問題が生じるでしょうか? –