2011-04-27 30 views
1

我有下面的代碼獲取自定義Webconfig科如何創建通用獲取自定義WebConfig段擴建方法

Configuration config = WebConfigurationManager.OpenWebConfiguration 
(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath + "/ExternalConfig"); 
     Sample1Section myHandler = 
      (Sample1Section)config.GetSection("settings"); 

我想將其轉換成通用的擴展方法,所以我不會重複相同的代碼爲每個自定義我創建的部分。

更新1:我得到的編譯錯誤 「靜態類不能有非靜態方法」

public static class MyExtensions 
{ 
    public T GetSection<T>(this string sectionName) where T : class 
    { 
     Configuration config = WebConfigurationManager.OpenWebConfiguration(HostingEnvironment.ApplicationVirtualPath + "/ExternalConfig"); 
     return config.GetSection(sectionName) as T; 
    } 
} 

更新2:固定感謝BrandonZeider :)

public static class MyExtensions 
{ 
    public static T GetSection<T>(this string sectionName) where T : class 
    { 
     Configuration config = WebConfigurationManager.OpenWebConfiguration(HostingEnvironment.ApplicationVirtualPath + "/ExternalConfig"); 
     return config.GetSection(sectionName) as T; 
    } 
} 

感謝在高級。

+0

如果我正確理解你的問題,它不會給你帶來太多:你仍然必須在每次調用中明確指定泛型類型參數,因爲該方法不會有任何方式從它的參數中推斷出它。 – 2011-04-27 19:21:42

+0

感謝的人,是的,我知道,我會,我只需要幫手接受任何自定義設置類型,然後我施放結果,就像BrandonZeider在他的代碼 – DevMania 2011-04-27 19:52:35

回答

1

試試這個:

public T GetSection<T>(string sectionName) where T : class 
{ 
    Configuration config = WebConfigurationManager.OpenWebConfiguration(HostingEnvironment.ApplicationVirtualPath + "/ExternalConfig"); 
    return config.GetSection(sectionName) as T; 
} 

關於你提到的更新,如果你的類是靜態的,所有成員也必須是靜態的(標記方法靜態)。

+0

中建議的那樣非常感激男人的快速回復,但我得到了編譯時間錯誤「靜態類不能有靜態方法」,請參閱上面的更新 – DevMania 2011-04-27 19:48:41

+0

如果你的類是靜態的,所有成員也必須是靜態的。 – BrandonZeider 2011-04-27 19:54:00

+0

再次感謝男人,我可以更愚蠢:) – DevMania 2011-04-27 19:56:44