Dynamics CRM: нулевое значение и GetPropertyValue <T>() - PullRequest
0 голосов
/ 03 августа 2011

Допустим, у меня есть код ниже:

public class ContactDTO
{
   public string Email {get; set;}
   public decimal? ExchangeRate {get; set;}
}
......

var contacts = crm.GetEntities("contact")

var cList = new List<ContactDTO>();
foreach(contact in contacts)
{
  clist.Add(new ContactDTO
    {
      Email = contact.GetPropertyValue<string>("emailaddress1");
      ExchangeRate = contact.GetPropertyValue<decimal>("exchangerate");
    }
}

В приведенном выше коде, если обменный курс равен нулю в динамике, я собираюсь вернуть значение по умолчанию для десятичного числа, которое не является тем, что я хочу (я хочу знать, является ли оно нулевым). Если бы я использовал:

contact.GetPropertyValue<decimal?>("exchangerate")

Должно ли это вернуть ноль, если в динамике он нулевой? Я пробовал это в других сценариях, и он всегда возвращает значение по умолчанию для типа значения. Как я могу получить нулевое значение, чтобы убедиться, что мое свойство объекта dto равно нулю?

1 Ответ

0 голосов
/ 10 августа 2011

Один из способов, который я могу предложить, - написать вспомогательный / упаковщик для метода GetPropertyValue, который проверяет тип возвращаемого значения и проверяет, является ли возвращаемый тип обнуляемым (как в contact.GetPropertyValue ("exchangerate")), а затем, если значение свойства также ноль, то возвращает ноль. НТН. :)

...