2010-08-11 15 views
18

Bazı ayarları XML dosyasından yükleyecek ve bu ayarları kendi özelliklerine uygulayacak statik bir sınıf yapmak istiyorum.Statik sınıflar üzerindeki yansımayla özellikleri ayarlama

Aşağıdaki kodu kullanmaya çalışıyorum ancak özelliği ayarlamak istediğimiz sınıf statik olduğundan, gerçekten SetValue yöntemine ne vereceğimi bilmiyorum.

// some code removed ... 
Type settingsType = typeof(Settings); // Settings is a static class 

foreach (PropertyInfo propertyInformation in settingsType.GetProperties(BindingFlags.Public | 
            BindingFlags.Static)) 
{ 
     //------------------------------------------------------------ 
     // Determine if configured setting matches current setting based on name 
     //------------------------------------------------------------ 
     if (propertyInformation.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) 
     { 
     //------------------------------------------------------------ 
     // Attempt to apply configured setting 
     //------------------------------------------------------------ 
     try 
     { 
     if (propertyInformation.CanWrite) 
     { 
     propertyInformation.SetValue(this, Convert.ChangeType(value, propertyInformation.PropertyType, CultureInfo.CurrentCulture), null); 
     } 
     } 
     catch 
     { 
     } 
      break; 
     } 

}

o yansıma ile statik sınıflar üzerinde özelliklerini ayarlamak mümkün bile mi?

+0

'Ayarlar' ** dahili mühürlü kısmi sınıf Ayarları '**? –

cevap

30

Örnek için null iletin.

+2

"this" yerine "typeof (Settings)" kullanarak çalışıyor – mare

+0

@mare: Belki de statik üyeler için göz ardı edilir. – leppie

+0

Belgelere göre, hiçbir şeyden geçememek için göz ardı edilir. Okunabilirlik için genellikle şöyle diyoruz: '' prop.SetValue ("ThisArgumentIsIgnoredForStaticMethods", value); '' ' –

İlgili konular