Ну, поскольку те классы DataContract, которые вы получаете, всегда являются частичными классами, вы можете просто добавить второй частичный класс и предоставить свойства PropertyAsInt.
Примерно так:
public partial class Product
{
public int ProductNumberAsInt
{
get
{
if(!string.IsNullOrEmpty(ProductNumber))
{
int result = -1;
if(int.TryParse(ProductNumber, out result)
return result;
else
return -1;
}
return 0;
}
}
}
Таким образом, вы просто определите свойство ProductNumberAsInt
, которое будет проверять базовое строковое свойство с именем ProductNumber
. Если это null
или string.Empty
, просто верните значение по умолчанию, например, -1 или 0 или все, что работает для вас.
Если это не ноль / пусто, вы можете попытаться преобразовать его в Int, и в случае успеха, вернуть это int - в противном случае вернуть другой индикатор (снова, выбирайте -1, 0, что бы вам ни показывалось) .
Таким образом, вам не нужно возиться с контрактами на данные WCF, без грязного ручного взлома, и вы можете настраивать эти дополнительные свойства по мере необходимости.
Марк