2013-06-01 54 views
1

閱讀從定製在web.config中

節點屬性「類型」,我定義我自己<sectionGroup>和<部分>在web.config中的元素。

我需要通過我的自定義<部分>指定的參數之一是Type。

例如,我現在有

<variable name="stage" value="dev" type="System.String, mscorlib" /> 

,然後在我的執行ConfigurationElement

[ConfigurationProperty("type", IsRequired = true)] 
public Type ValueType 
{ 
    get 
    { 
     var t = (String) this["type"]; 
     return Type.GetType(t); 
    } 
    set 
    { 
     this["type"] = value; 
    } 
} 

在運行時,這將引發異常

無法找到一個轉換器支持將類型'Type'的屬性'type'轉換爲字符串。

我已經試過各種事情諸如

  • 重命名屬性valueType(以避免具有相同名稱的一種可能的預先配置的屬性的任何衝突)
  • 簡單地將其指定爲"System.String"
  • 改變了屬性的getter到return (Type) this["type"];

但日e例外總是相同的。

有人能指出我正確的方向嗎?

回答

4

使用這樣的事情:

[ConfigurationProperty("type", IsRequired = true)] 
[TypeConverter(typeof(TypeNameConverter)), SubclassTypeValidator(typeof(MyBaseType))] 
public Type ValueType 
{ 
    get 
    { 
     return (Type)this["type"];    
    } 
    set 
    { 
     this["type"] = value; 
    } 
} 

使用SubclassTypeValidator的不是絕對必要的,但最多會用它的時代......我至少做。

+0

布拉沃,亞歷山大! – awj