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ş:
Potansiyel olarak tehlikeli bir İstek....
Nasıl bir dize olarak adını aldığımda ...
Dizeden özellik değeri C yansıma kulla...
JSON dize olarak seri numaralama...
Nasıl sınırlayıcı olarak herhangi bir ...