2011-06-29 57 views
0

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

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

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

我可以手动做到这一点:

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

但我有一些大的列表项和写作,对于那些将得到乏味。

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

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

+1

为什么不只是从外部源返回一个已初始化(具有正确值)的类实例并将其添加到集合中。 – ChrisBint

回答

1

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

例如

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

那么当您创建的ClaimPwk一个实例,您将有默认值""

2

返回类的初始化(用正确的价值观,如果的String.Empty需要),例如来自外部源的特性并将其直接添加到集合中。

classCollection.Add(GetClassInstanceFromOutsideSource()); 

如果你无法从这个外源返回一个实例,写一个包装方法来调用它,返回实例,并直接添加到这个集合。

我无法想出任何你想添加的理由,实质上是你的类的'空'实例到集合中,然后更新它。无效且不合逻辑。

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类定义。