SORU
6 Temmuz 2009, PAZARTESİ


Bir dize değeri ile yansıma olarak ayarlama özelliği

Yansıma yoluyla bir nesnenin bir özelliği ayarlamak için, türünde bir değer 2 **istiyorum. Bu yüzden, örneğin, Ship Dersim var, double Latitude, bir özellik sanırım.

Yapmak istediğim şey şu:

Ship ship = new Ship();
string value = "5.5";
PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude");
propertyInfo.SetValue(ship, value, null);

Bu ArgumentException bir atar

Nesne türü 'System.String' türü 'System.dönüştürülmesi'. Çift

Nasıl doğru yazın propertyInfo temel değeri dönüştürebilirsiniz?

CEVAP
6 Temmuz 2009, PAZARTESİ


Seni temsil biçimlerini değiştirmek için IConvertible türlü bilgi çalışma zamanı sağlar Convert.ChangeType() - kullanabilirsiniz. Tüm dönüşümleri mümkün olsa da, ve eğer IConvertible olmayan tip dönüşümleri desteklemek istiyorsanız özel case logic yazmak gerekebilir.

Gelen kodu (istisna işleme veya özel case logic olmadan):

Ship ship = new Ship();
string value = "5.5";
PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude");
propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • SignatureSeries

    SignatureSer

    24 Aralık 2006
  • YouChewBu

    YouChewBu

    26 Ocak 2009