gpt4 book ai didi

c# - 自定义配置部分 .NET

转载 作者:行者123 更新时间:2023-11-30 12:10:16 26 4
gpt4 key购买 nike

我正在尝试创建一个自定义配置部分以按照以下教程保存一些 API 凭据:http://devlicio.us/blogs/derik_whittaker/archive/2006/11/13/app-config-and-custom-configuration-sections.aspx .我已将以下内容添加到我的 Web.config 文件中:

<!-- Under configSections -->
<section name="providers" type="EmailApiAccess.Services.ProviderSection, EmailApiAccess.Services"/>

<!-- Root Level -->
<providers>
<add name="ProviderName" username="" password ="" host="" />
</providers>

并创建了以下类:

public class ProviderSection: ConfigurationSection
{
[ConfigurationProperty("providers")]
public ProviderCollection Providers
{
get { return ((ProviderCollection)(base["providers"])); }
}
}
[ConfigurationCollection(typeof(ProviderElement))]
public class ProviderCollection : ConfigurationElementCollection
{
public ProviderElement this[int index]
{
get { return (ProviderElement) BaseGet(index); }
set
{
if (BaseGet(index) != null)
BaseRemoveAt(index);

BaseAdd(index, value);
}
}

protected override object GetElementKey(ConfigurationElement element)
{
return ((ProviderElement)(element)).name;
}

protected override ConfigurationElement CreateNewElement()
{
return new ProviderElement();
}
}
public class ProviderElement: ConfigurationElement
{
public ProviderElement() { }

[ConfigurationProperty("name", DefaultValue="", IsKey=true, IsRequired=true)]
public string name
{
get { return (string)this["name"]; }
set { this["name"] = value; }
}

[ConfigurationProperty("username", DefaultValue = "", IsRequired = true)]
public string username
{
get { return (string)this["username"]; }
set { this["username"] = value; }
}

[ConfigurationProperty("password", DefaultValue = "", IsRequired = true)]
public string password
{
get { return (string)this["password"]; }
set { this["password"] = value; }
}

[ConfigurationProperty("host", DefaultValue = "", IsRequired = false)]
public string host
{
get { return (string)this["host"]; }
set { this["host"] = value; }
}


}

但是,当我尝试使用这个实现代码时:

var section = ConfigurationManager.GetSection("providers");
ProviderElement element = section.Providers["ProviderName"];
var creds = new NetworkCredential(element.username, element.password);

我收到一条错误消息,指出“对象”不包含“提供者”的定义....

如有任何帮助,我们将不胜感激。

最佳答案

ConfigurationManager.GetSection返回 object 类型的值,而不是您的自定义配置部分。尝试以下操作:

var section = ConfigurationManager.GetSection("providers") as ProviderSection;

关于c# - 自定义配置部分 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18839550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com