2010-10-04 9 views
2

Я пытаюсь написать свою первую службу WCF. Сейчас я просто хочу взять кучу свойств объекта и записать их на SQL Server. Не все значения свойств всегда будут установлены так, что я хотел бы получить объект со стороны службы, пропустить все свойства объекта и если есть какой-либо тип данных строки, которые не установлены, установите значение в значение " ?». Все свойства объекта определены типа stringКак установить значение свойства, если оно равно нулю?

Я пытаюсь найти здесь следующий код, но получить сообщение об ошибке «Объект не соответствует типу цели». на строке, указанной ниже

 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); 
       } 
      } 
     } 

Как проверить, не установлено ли свойство типа строки на объекте?

ответ

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)) 
    { 
Смежные вопросы