如何手动从 app.config 文件读取强类型对象
我有一个 dll,我想从手动指定的 app.config 文件中读取该 dll(该 dll 是本机 com dll 的 .net 扩展名,该 dll 是 Microsoft 管理控制台管理单元,因此没有 mmc.exe.config)。 我已经能够打开配置文件,阅读相关的组和部分以获得我想要的设置。 像这样:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
ShowSectionGroupCollectionInfo(config.SectionGroups);
ConfigurationSectionGroup group = config.SectionGroups["applicationSettings"];
ClientSettingsSection section = group.Sections["Namespace.Properties.Settings"] as ClientSettingsSection;
SettingElement sectionElement = section.Settings.Get("AllowedPlugins");
SettingValueElement elementValue = sectionElement.Value;
设置是一个字符串集合和一个字符串。 像这样:
<applicationSettings>
<Namespace.Properties.Settings>
<setting name="AllowedPlugins" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>Plugin1.Name</string>
<string>Plugin2.Name</string>
<string>Plugin3.Name</string>
</ArrayOfString>
</value>
</setting>
<setting name="blah" serializeAs="String">
<value>sajksjaksj</value>
</setting>
</Namespace.Properties.Settings>
</applicationSettings>
我可以用一种 kak 手动方式从中创建一个字符串数组:
List<String> values = new List<string>(elementValue.ValueXml.InnerText.Split(new string[]{" ",Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries ));
但我想知道是否有一种我缺少的好方法可以读取我的设置并将其转换为右侧的对象键入的方式与读取标准 app.config 文件时的方式相同。
请告诉我有...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我过去完成此操作的方法是使用自定义配置部分并为该部分实现
IConfigurationSectionHandler
。 您仍然需要在配置节处理程序中进行所有解析,但是它可以轻松地以您希望在应用程序中使用的形式获取配置节中的信息。 MSDN 上有一篇如何文章,介绍了创建过程这样的处理程序。下面是我使用过的一个示例:
用法:
web.config:
代码:
The way that I've done this in the past is use a custom configuration section and implement an
IConfigurationSectionHandler
for the section. You still have to do all of the parsing inside the configuration section handler, but it makes it easy to get the information in the configuration section in the form you want it in your application. There is a How To article on MSDN that goes through the process of creating such a handler.Below is an example of one that I've used:
usage:
web.config:
code:
更好的解决方案可能是,类似于将 sql 连接字符串添加到 app.config 中的方式:
http://msdn.microsoft.com/en-us/library/system.configuration.configurationcollectionattribute.aspx
A better solution might be, which is similar to how sql connection strings are added to a app.config:
http://msdn.microsoft.com/en-us/library/system.configuration.configurationcollectionattribute.aspx