代码之家  ›  专栏  ›  技术社区  ›  Florian Doyon

App.Config或XAML

  •  7
  • Florian Doyon  · 技术社区  · 16 年前

    我目前正在评估重写我正在处理的项目的选项,我对app.config文件的严格类型有点恼火。

    我想转向更结构化的方法,所以我有两个选择:

    • 在app.config中使用自定义SectionHandlers
    • 废弃app.config,改用XAML。

    我想听听你对此的看法和恐怖故事,使用XAML的优缺点是什么?

    弗洛里安

    3 回复  |  直到 14 年前
        1
  •  4
  •   Anemoia    16 年前

    如果我们谈论的是配置文件,我会使用app.config吗?为什么?这就是它的意义。如果我们讨论的是资源(图片、消息),我会将它们放在XAML资源目录中。

    网上有一个关于放什么的指南,但上次我查看时还在草稿中,没有提到app.config afaik。

    但做最适合你的事:)

        2
  •  1
  •   AnthonyWJones    16 年前

    就发展努力而言,是六分之一。

    如果您使用自定义SectionHandlers,您仍然需要创建这些节将表示的类实例。您还需要创建SectionHandlers。

    1-0至Xaml。

    对于Xaml,您需要提供自己的基础设施,以便在启动时加载Xaml并在整个应用程序中访问配置。

    1全部

        3
  •  1
  •   stakx - no longer contributing Saravana Kumar    13 年前

    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);
        }
    }
    

    应用程序配置

    <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
            …
        }
    }
    

    最后从 应用程序配置 使用:

    var objectOfSomeType = ConfigurationManager.GetSection("SomeType") as SomeType;
    
    推荐文章