我正在尝试编写我的第一个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);
}
}
}
我应该如何检查对象上的字符串类型属性是否尚未设置?
答案 0 :(得分:2)
PropertyInfo.GetValue
返回的值为object
。但是,既然您知道该值是string
(因为您在上面的行中检查过),您可以通过执行转换来告诉编译器“我知道这是一个字符串”:
if (pInfo.PropertyType == typeof(String))
{
string value = (string) pInfo.GetValue(this, null);
if (value == "")
{
另外,我会在那里添加一个额外的null
检查,以防值
if (pInfo.PropertyType == typeof(String))
{
string value = (string) pInfo.GetValue(this, null);
if (string.IsNullOrEmpty(value))
{