我目前正在评估我正在进行的项目重写的选项,我对app.config文件的字符串式特性感到有点恼火。
我想采用更有条理的方法,所以我有两个选择:
我想了解你的观点和恐怖故事,使用XAML的优点和缺点是什么?
干杯, 弗洛里安
答案 0 :(得分:3)
如果我们谈论配置文件,我会使用app.config吗?为什么?这就是它的意思。如果我们谈论资源(图片,消息),我会将它们放在XAML资源目录中。
网上有一个关于放置内容的指南,但上次我检查时仍处于草稿状态,并且未提及app.config afaik。
但做最适合你的事情:)
答案 1 :(得分:1)
就发展而言,其中六分之六是另外六分之一。
如果您使用Xaml,则需要创建一组Xaml将创建的类实例。
如果使用Custom SectionHandlers,您仍然需要创建这些部分将代表的类实例。您还需要创建SectionHandlers。
1 - 0到Xaml。
在Xaml的情况下,您需要提供自己的基础设施,以便在启动时加载xaml并访问整个应用程序中的配置。
另一方面,使用Section Handlers,现有的.NET ConfigurationManager提供了访问这些的基础设施。
1全部
答案 2 :(得分:1)
如果您正在使用.NET 4,为什么不将两个选项结合起来并将XAML放在App.config
内?
using System.Configuration;
using System.Xaml;
using System.Xml;
public class XamlConfigurationSection : IConfigurationSectionHandler
{
public object Create(object parent, object configContext, XmlNode section)
{
return XamlServices.Parse(section.OuterXml);
}
}
此自定义配置部分允许您在App.config
中包含任何描述为XAML的对象:
<configSections>
<section name="SomeType" type="XamlConfigurationSection, …" />
</configSections>
<SomeType xmlns="clr-namespace:SomeNamespace;assembly=…"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
…
</SomeType>
如果您有类型:
namespace SomeNamespace
{
public class SomeType
{
public SomeType() { … } // XAML requires a parameterless constructor
…
}
}
最后从App.config
使用:
var objectOfSomeType = ConfigurationManager.GetSection("SomeType") as SomeType;