App.Config или XAML - PullRequest
       11

App.Config или XAML

7 голосов
/ 21 мая 2010

В настоящее время я оцениваю свои варианты переписывания проектов, над которыми я работаю, и меня немного раздражает строковая типизация наших файлов app.config.

Я бы хотел перейти к более структурированному подходу, поэтому у меня есть два варианта:

  • Использование пользовательских SectionHandlers в app.config
  • Удалите app.config и используйте вместо него XAML.

Я хотел бы узнать ваше мнение и ужасные истории по этому поводу. Каковы преимущества и недостатки использования XAML для этого?

Cheers, Florian

Ответы [ 3 ]

3 голосов
/ 21 мая 2010

Если мы говорим о конфигурационных файлах, я бы использовал app.config? Зачем? Вот для чего он предназначен. Если мы говорим о ресурсах (изображения, сообщения), я бы поместил их в каталог ресурсов XAML.

В Интернете есть руководство, куда помещать что-либо, но в прошлый раз, когда я проверял, я все еще находился в черновике и не упоминал app.config afaik.

Но делай то, что лучше для тебя:)

1 голос
/ 05 сентября 2011

Если вы работаете с .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);
    }
}

Этот пользовательский раздел конфигурации позволяет включить любой объект, описанный как XAML, в App.config:

<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;
1 голос
/ 21 мая 2010

С точки зрения разработки усилия составляют 6 из полдюжины других.

Если вы используете Xaml, вам нужно будет создать набор экземпляров классов, из которых будет создан Xaml.

Если вы используете Custom SectionHandlers, вам все равно нужно будет создавать экземпляры классов, которые будут представлять эти разделы. Вам также необходимо создать SectionHandlers.

1 - 0 до Xaml.

В случае Xaml, однако, вам нужно будет предоставить собственную инфраструктуру для загрузки xaml при запуске и доступа к конфигурации во всем приложении.

С другой стороны, с помощью обработчиков разделов существующий .NET ConfigurationManager предоставляет инфраструктуру для доступа к ним.

1 все

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...