Как установить значение свойства, если оно равно нулю? - PullRequest
2 голосов
/ 05 октября 2010

Я пытаюсь написать свой первый сервис 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);
                }
            } 
        }

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

1 Ответ

2 голосов
/ 05 октября 2010

Значение, возвращаемое из 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))
    {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...