私はこのビューモデルを持っています:
public class BankAccountViewModel : IValidator<BankAccountViewModel>
{
public BankAccount BankAccount { get; set; }
public void ConfigureValidation(ValidationConfiguration<StockOnHandViewModel> config)
{
config.For(m => m.BankAccount.AccountHolder);
}
}
したがって、クラスは次のとおりです。
public class BankAccount
{
public string AccountHolder { get; set; }
public List<Transfer> Transfers { get; set; }
}
public class Transfer
{
public int Amount { get; set; }
}
次に、検証用の拡張機能がいくつかあります
public static class ValidationExtensions
{
public static PropertyRuleSet<TModel, TProperty> For<TModel, TProperty>(
this ValidationConfiguration<TModel> validationConfiguration,
Expression<Func<TModel, TProperty>> accessor)
{
return validationConfiguration.Add(accessor);
}
}
そのため、AccountHolderのForメソッドを呼び出すことができました。config.For(m => m.BankAccount.AccountHolder);
かっこいいです。期待通りに式を送信します。
リストアイテムの転送は少し難しくなります。
転送では、各転送の金額の式を介して送信したい場合があります。したがって、転送が2つある場合は、次のように送信します。
m => m.BankAccount.Transfers[0].Amount
m => m.BankAccount.Transfers[1].Amount
私はこの方法でそれを行うことができることを知っています:
for(int i=0; i < BankAccount.Transfers.Count; i++)
{
config.For(m => m.BankAccount.Transfers[i].Amount);
}
ただし、リストアイテムに対してこれを常に実行したくはありません。
私は本当にFor
、リストアイテムに対して別の方法を使用したいと思っています。これは、なんらかの方法で呼び出すことができ、それによって私に代わって実行されます。
私は多分次のようなことを考えていました:
public static PropertyRuleSet<TModel, TProperty> For<TModel, TProperty>(
this ValidationConfiguration<TModel> validationConfiguration,
Expression<Func<TModel, TProperty>> accessor, int count)
{
...
}
あなたはおそらくそれを次のように呼ぶでしょう:
config.For(m => m.BankAccount.Transfers[i].Amount, BankAccount.Transfers.Count);
ただし、iなしで式の部分を送信し、後で各リストアイテムに入力する方法がわからないため、これは機能しません。また、メソッドで何をすべきかわからない
誰もがここで何をすべきか知っていますか?