2011-11-02 29 views
7

Nesnemin tüm DateTime özelliklerini varsayılan bir tarihe ayarlamak istiyorum. Ancak, değerleri yansıtma yoluyla ayarlamaya çalışırsam istisnayı alırım: "Nesne hedef türüyle eşleşmiyor."C# Nesne ayarlama DateTime özellik değerleri yansıma yoluyla

private void SetDefaultValues() 
{ 
    DateTime dt = DateTime.Parse("1/1/2000", new CultureInfo("en-US", true)); 
    foreach (PropertyInfo p in this.GetType().GetProperties()) 
    { 
     if (p.PropertyType.FullName == "System.DateTime") 
     {          
      p.SetValue(dt, typeof(DateTime), null); 
     } 
    } 
} 

Temel olarak yanlış bir şey mi/düşünüyor muyum?

+0

Bunları doğrudan yansıtma yoluyla ayarlama nedeniniz nedir? Ayarlanması gereken bir tonunuz varsa, bunları bir Liste'ye veya bir Sözlüğe eklemeyi düşünebilirsiniz. –

+0

Standart özelliklerden kaçınmak için varsayılan tarihle birlikte bir sınıf varmı döndüren bir alıcı var mı? –

+0

Yansıma temelinde özel bir serileştirme yöntemi uygulayan çok düzeyli bir devralma kabusunda benzer işlevleri yapmaya çalıştım. Performans korkunç! Kısmi sınıfları kullanıp kod üreteci yazmaktan daha iyidir. (0,02 dolar). –

cevap

9

Parametrelerin ayarlanması gerekir; Birincisi hedef - burada this olduğunu varsayıyorum; ikinci değeri (dt) değeridir. Sonuncusu, muhtemelen burada geçerli olmayan "dizinleyiciler" ile ilgilidir.

p.SetValue(this, dt, null); 
+0

işe yarıyor - seviyorum, teşekkürler! :-) – Mike

İlgili konular