2011-04-27 44 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

相关问题