如何创建通用获取自定义WebConfig节扩展方法

时间:2011-04-27 19:14:21

标签: c# asp.net web-config

我有以下代码来获取自定义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;
    }
}

1 个答案:

答案 0 :(得分:2)

试试这个:

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

关于您的更新,如果您的类是静态的,则所有成员也必须是静态的(将方法标记为静态)。