如果属性值为null,如何设置它?

时间:2010-10-04 23:48:47

标签: c# wcf

我正在尝试编写我的第一个WCF服务。现在我只想获取一个对象的一堆属性并将它们写入SQL Server。 并不是所有的属性值都会被设置,所以我想在服务端接收对象,遍历对象上的所有属性,如果有任何未设置的字符串数据类型,请将值设置为“? ”。 对象的所有属性都是由类型字符串

定义的

我正在尝试下面的代码,但是得到错误“对象与目标类型不匹配”。在下面的行上

        foreach (PropertyInfo pInfo in typeof(item).GetProperties())
        {
            if (pInfo.PropertyType == typeof(String))
            {
                if (pInfo.GetValue(this, null) == "")
                //The above line results in "Object does not match target type."
                {
                    pInfo.SetValue(this, "?", null);
                }
            } 
        }

我应该如何检查对象上的字符串类型属性是否尚未设置?

1 个答案:

答案 0 :(得分:2)

PropertyInfo.GetValue返回的值为object。但是,既然您知道该值是string(因为您在上面的行中检查过),您可以通过执行转换来告诉编译器“我知道这是一个字符串”:

if (pInfo.PropertyType == typeof(String))
{
    string value = (string) pInfo.GetValue(this, null);
    if (value == "")
    {

另外,我会在那里添加一个额外的null检查,以防值或为空。幸运的是,有string.IsNullOrEmpty方法:

if (pInfo.PropertyType == typeof(String))
{
    string value = (string) pInfo.GetValue(this, null);
    if (string.IsNullOrEmpty(value))
    {