0

假设我有一个由包含三个字符串的 listitem 组成的列表。我添加了一个新的列表项,并尝试从外部来源分配所述字符串的值。

如果其中一项未分配,则列表项中的值将保持为空(未分配)。因此,如果我尝试将该值分配给页面上的字段,则会出现错误。

我可以检查页面上每个字段的 isNullOrEmpty,但这似乎效率低下。我宁愿在代码隐藏中将值初始化为“”(空字符串)并发送有效数据。

我可以手动完成:

            ClaimPwk emptyNode = new ClaimPwk();
            emptyNode.cdeAttachmentControl = "";
            emptyNode.cdeRptTransmission = "";
            emptyNode.cdeRptType = "";
            headerKeys.Add(emptyNode);

但我有一些大清单项目,为这些项目写会变得乏味。

那么是否有一个命令,或者只是一种更简单的方法来将 listitem 初始化为空字符串而不是 null?

或者有人有更好的主意吗?

4

3 回答 3

2

从外部源返回类的初始化(使用适当的值,如果需要,则为 string.Empty)实例,并将其直接添加到集合中。

   classCollection.Add(GetClassInstanceFromOutsideSource());

如果您无法从此外部源返回实例,请编写一个包装器方法来调用它,返回实例并将其直接添加到集合中。

我想不出您为什么要添加的任何理由,本质上是您的类的“空”实例到集合中,然后再更新它。低效且不合逻辑。

于 2011-06-29T14:36:22.113 回答
1

可能有点牵强,但您可以使用反射将所有公共可写字符串属性设置为string.Empty这样

emptyNode.GetType()
         .GetProperties()
         .Where(p => p.CanWrite && p.PropertyType == typeof(string)).ToList()
         .ForEach(p => p.SetValue(emptyNode, string.Empty, null));

但最有效的选择是在类定义中将属性初始化为 string.Empty。

于 2011-06-29T14:38:24.700 回答
1

当你在你的类中定义它们时,你可以用默认值(""在你的情况下)设置你的属性ClaimPwk

例如

Public Class ClaimPwk{
    public string cdeAttachmentControl = "";
    public string cdeRptTransmission = "";
    public string cdeRptType = "";
}  

那么当您创建一个实例时,ClaimPwk您将拥有那些具有默认值的属性""

于 2011-06-29T14:36:18.577 回答