App.Config或XAML

时间:2010-05-21 08:46:24

标签: .net xaml configuration

我目前正在评估我正在进行的项目重写的选项,我对app.config文件的字符串式特性感到有点恼火。

我想采用更有条理的方法,所以我有两个选择:

  • 在app.config
  • 中使用自定义的SectionHandlers
  • 报废app.config并改为使用XAML。

我想了解你的观点和恐怖故事,使用XAML的优点和缺点是什么?

干杯, 弗洛里安

3 个答案:

答案 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;