gpt4 book ai didi

c# - 如何为多个 BO 属性定义 IDataErrorInfo 错误属性

转载 作者:可可西里 更新时间:2023-11-01 08:56:09 25 4
gpt4 key购买 nike

我开始通过 IDataErrorInfo 接口(interface)在我的 WPF 项目中实现验证。我的业务对象包含多个带有验证信息的属性。如何获取与该对象关联的所有错误消息的列表。我的想法是,这就是 Error 属性的用途,但我无法找到任何人使用它来报告多个属性。

谢谢!

public string this[string property]
{
get {

string msg = null;
switch (property)
{
case "LastName":
if (string.IsNullOrEmpty(LastName))
msg = "Need a last name";
break;
case "FirstName":
if (string.IsNullOrEmpty(LastName))
msg = "Need a first name";
break;

default:
throw new ArgumentException(
"Unrecognized property: " + property);
}
return msg;

}
}

public string Error
{
get
{
return null ;
}
}

最佳答案

是的,我知道您可以在哪里使用索引器。我想这是一个不错的方法。不过,我真的很关注“错误”属性。我喜欢将错误包含在业务对象中的概念。我想我想做的事情本身并不存在,所以我只是在对象上创建了一个错误字典(在属性更改时随时更新)并让错误返回一个 CarriageReturn 分隔的错误列表,如下所示:

    public string this[string property]
{
get {

string msg = null;
switch (property)
{
case "LastName":
if (string.IsNullOrEmpty(LastName))
msg = "Need a last name";
break;
case "FirstName":
if (string.IsNullOrEmpty(FirstName))
msg = "Need a first name";
break;
default:
throw new ArgumentException(
"Unrecognized property: " + property);
}

if (msg != null && !errorCollection.ContainsKey(property))
errorCollection.Add(property, msg);
if (msg == null && errorCollection.ContainsKey(property))
errorCollection.Remove(property);

return msg;
}
}

public string Error
{
get
{
if(errorCollection.Count == 0)
return null;

StringBuilder errorList = new StringBuilder();
var errorMessages = errorCollection.Values.GetEnumerator();
while (errorMessages.MoveNext())
errorList.AppendLine(errorMessages.Current);

return errorList.ToString();
}
}

关于c# - 如何为多个 BO 属性定义 IDataErrorInfo 错误属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com