2010-02-23 16 views
23

C# ve .NET 3.5'de özel bir yapılandırma sınıfı yazıyorum. Özelliklerden biri, System.Type türünde olmalıdır. Kodu çalıştırdığımda başlıkta belirtilen hatayı alıyorum.'Type' türü için dize/dize dönüştürmeyi destekleyen bir dönüştürücü bulunamıyor

[ConfigurationProperty("alertType", IsRequired = true)] 
public Type AlertType 
{ 
    get { return (Type)this["alertType"]; } 
    set { this["alertType"] = value; } 
} 

yapılandırma dosyası şuna benzer:

<add name="Name" pollingInterval="60" alertType="Namespace.ClassName, Company.Project" /> 

.net framework yapılandırma dosyasının configsections bir type özelliğine sahip olduğundan, System.Type içine bir dize atmak yapabiliyor. Soru, bunu nasıl yapıyorlar.

cevap

60

Bu eski olduğunu biliyorum, ama bu aslında doğru cevap olduğunu düşünüyorum:

[TypeConverter(typeof(TypeNameConverter))] 
[ConfigurationProperty("alertType", IsRequired=true)] 
public Type AlertType 
{ 
    get { return this[ "alertType" ] as Type; } 
    set { this[ "alertType" ] = value; } 
} 

TypeNameConverter ekleme dönüşümü yapar Size ilginizi çekebilir iki yöntemi vardır Type to Type türünden Type.GetType() kullanılmadan gerçekleşir.

+0

Evet, kabul edilen çözüm benim için bir sebepten ötürü işe yaramadı. –

4

aradığınız düşünüyorum.

ConvertToString ve ConvertFromString

İlgili konular