我正在寻找一种简单而优雅的方法来存储我的应用程序的设置。这是一个密切描述我正在寻找的例子
public class Office
{
string location;
int numberOfWorkStations;
int numberOfServers;
string developerNames[];
}
配置如下:
<Office>
<Location>Mumbai, India</Location>
<NumberOfWorkStations>10</NumberOfWorkStations>
<NumberOfServers>2</NumberOfServers>
<DeveloperNames>
<DeveloperName>GoGo</DeveloperName>
<DeveloperName>MoMo</DeveloperName>
<DeveloperName>JoJo</DeveloperName>
</DeveloperNames>
</Office>
早在2005/6年,就有了一个企业库配置块,它将抽象出所有的XML序列化内容。
我正在查看企业库的最新版本,但似乎配置块不再存在。
我在.Net framework 4.5上,我的想法是,由于该功能已从企业库中删除,因此它现在应该存在于.Net框架中。
我已经读过这个blog,但感觉从ConfigurationSection,ConfigurationElement等派生出来的工作仍然比Enterprise Library过去提供的工作要多得多。我正在寻找的是非常接近XMLSerialization,但我不想编写代码来进行序列化,因为我觉得这就像重新发明轮子一样。
感谢您查阅我的帖子。
答案 0 :(得分:3)
我使用Castle Windsor XML Inline Parameters:
这是配置文件(将其保存为OfficeConfig.config并将其与您的exe放在同一个文件夹中)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<components>
<component id="Office">
<parameters>
<Location>Mumbai, India</Location>
<NumberOfWorkStations>10</NumberOfWorkStations>
<NumberOfServers>2</NumberOfServers>
<DeveloperNames>
<array>
<item>GoGo</item>
<item>MoMo</item>
<item>JoJo</item>
</array>
</DeveloperNames>
</parameters>
</component>
</components>
</configuration>
以下是代码:
namespace ConsoleApplication1
{
using System;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using Castle.Windsor.Installer;
public class Office
{
public string Location { get; set; }
public int NumberOfWorkStations { get; set; }
public int NumberOfServers { get; set; }
public string[] DeveloperNames { get; set; }
}
class Program
{
static void Main(string[] args)
{
var container = new WindsorContainer()
.Install(Configuration.FromXmlFile("OfficeConfig.config"))
.Register(
Component.For<Office>().Named("Office").LifeStyle.Singleton,
Component.For<Program>().LifeStyle.Transient);
var program = container.Resolve<Program>();
}
public Program(Office office)
{
Console.WriteLine(office.Location);
Console.WriteLine(office.NumberOfWorkStations);
Console.WriteLine(office.NumberOfServers);
foreach (var name in office.DeveloperNames)
{
Console.WriteLine(name);
}
}
}
}
您甚至可以使用列表和词典作为属性
答案 1 :(得分:1)
我正在查看企业库的最新版本,但似乎配置块不再存在。
我在.Net framework 4.5上,我的想法是,由于该功能已从企业库中删除,它现在应该 存在于.Net框架中。
是的,您的假设是正确的。当功能进入.NET Framework时,配置块被删除。
另一种方法是利用工具创建配置类。例如,Configuration Section Designer。