这可以将Appconfig值作为对象调用吗?

时间:2012-02-28 02:03:36

标签: c#

我的dll类库中有以下方法

 private void Download(string filename)
    {
     //am calling this value from appconfig
string ftpserverIp = System.Configuration.ConfigurationManager.AppSettings["ServerAddress"];
    //    somecode to download the file
    }

    Private void Upload(string filename)
    {
string ftpserverIp = System.Configuration.ConfigurationManager.AppSettings["ServerAddress"];
    //    somecode to upload the file
    }

就像我从appconfig获取所有方法的所有值一样,这是调用appconfig值的有效方法吗?

5 个答案:

答案 0 :(得分:1)

运行时不会太昂贵。

然而,维护代码将是一个维护问题。也许财产是有益的。

private string ServerAddress 
{
   get { return System.Configuration.ConfigurationManager.AppSettings["ServerAddress"]; }
}
private void Download(string filename)
{
 // Use ServerAddress
//    somecode to download the file
}

Private void Upload(string filename)
{

//    somecode to upload the file
}

下一个合乎逻辑的步骤是编写自定义配置部分。

答案 1 :(得分:1)

私人傻瓜如何节省打字/复制'n'pasting:

private string FtpServerIp
{
    get
    {
        return ConfigurationManager.AppSettings["ServerAddress"];
    }
}

答案 2 :(得分:1)

这是访问配置文件的AppSettings部分的首选方式。如果您担心单元测试目的,您可以从父容器或类中的配置中注入这些值,然后您可以使用值进行测试。或者您可以在单元测试项目中使用单独的配置。

答案 3 :(得分:1)

我通常会在配置的appsettings部分为所有项目创建一个类,例如

public class ConfigSettings  
{
    public static string ServerAddress
    {
        get
        {
            return System.Configuration.ConfigurationManager.AppSettings["ServerAddress"];
        }
    }

    public static string OtherSetting
    {
        get
        {
            return System.Configuration.ConfigurationManager.AppSettings["OtherSetting"];
        }
    }
}

然后使用它:

string address = ConfigSettings.ServerAddress;

答案 4 :(得分:0)

AppSettings被缓存 - 因此以这种方式调用它们是有效的。