SORU
20 AĞUSTOS 2010, Cuma


Dönüştürmek.() ChangeType türü Null başarısız.

Bir dize olarak var olan nesne özellik değeri, bir dize dönüştürmek istiyorum. Bu yüzden bu şekilde yapmaya çalışıyorum:

string modelProperty = "Some Property Name";
string value = "SomeValue";
var property = entity.GetType().GetProperty(modelProperty);
if (property != null) {
    property.SetValue(entity, 
        Convert.ChangeType(value, property.PropertyType), null);
}

Sorun bu başarısız ve özellik türü null olabilecek bir tür olduğunda Geçersiz Dökme bir özel Durum üretiliyor. Bu durumda değerleri alamamak Dönüştürülecek - olacak iş yaparsam o el ile (örneğin DateTime? d = Convert.ToDateTime(value);) gördüm bazı benzer sorular ama yine de olmaz.

CEVAP
20 AĞUSTOS 2010, Cuma


Denenmemiş, ama belki bir işe yarayacak gibi:

string modelProperty = "Some Property Name";
string value = "Some Value";

var property = entity.GetType().GetProperty(modelProperty);
if (property != null)
{
    Type t = Nullable.GetUnderlyingType(property.PropertyType) ?? property.PropertyType;

    object safeValue = (value == null) ? null : Convert.ChangeType(value, t);

    property.SetValue(entity, safeValue, null);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007
  • PaysNatalAu's channel

    PaysNatalAu'

    11 Aralık 2010
  • Sali Kaceli

    Sali Kaceli

    24 ŞUBAT 2009