środa, 12 maja 2010

Przenoszenie ustawień pomiędzy różnymi assembly (C# .NET) [PL]

Promuj
Korzystając z Viusal Studio i .NET mamy łatwy sposób konfigurowania aplikacji przy pomocy plików app.config oraz Settings.Settings. Pisałem już o tym na tym blogu w artykule: „Przechowywanie i edycja ustawień aplikacji w .NET (prosto, szybko, sprawnie i elegancko)(przykłady oparte o .NET, w języku C#)”. Niestety można natknąć się na „schody”, gdy ustawienia chcemy przenosić pomiędzy różnymi assembly. Zobaczmy na prostym przykładzie jak to rozwiązać...
W przykładzie analizujemy następujące solution:
 Jak widać mamy dwa assembly. Pierwsze to biblioteka: ClassLibrary1, która definiuje klasę Class1 i ma swoje ustawienie „MySetting”. Drugie to aplikacja: Settingtest, która wykorzystuje ClassLibrary1.
Class1.cs:
namespace ClassLibrary1
{
  public class Class1
  {
    public static string GetSetting()
    {
      return Properties.Settings.Default.MySetting;
    }
  }
}

Program.cs:

using System;
using ClassLibrary1;
namespace Settingtest
{
  class Program
  {
    static void Main( string[] args )
    {
      Console.WriteLine( "Setting from library:" + Class1.GetSetting() );
      Console.ReadLine();
    }
  }
}
Chcielibyśmy mieć możliwość konfigurowania ustawienia MySetting z poziomu aplikacji. Niestety w tej kwestii Visual Studio nie wiele nas wspomoże. Musimy sami ręcznie zmodyfikować plik app.config aplikacji. Zostało to przedstawione na poniższym rysunku:
Jak widać trzeba ręcznie przenieść definicję sekcji ClassLibrary1.Properties.Settings, oraz skopiować ustawienia (w tym MySetting) do sekcji applicationSettings.
Dzięki temu możemy podziwiać następujące działanie aplikacji:

Przyjrzyjmy się jeszcze na chwilę ustawieniom aplikacji i przeanalizujmy skąd biorą się poszczególne elementy XML:
Jak widać „sectionGroup” definiuje wykorzystywaną grupę: „applicactionSettings”. Ponadto tworzone są dwie sekcje „Settingtest.Properties.Settings” oraz „ClassLibrary.Properties.Settings”, które są później nazwami elementów XML, wewnątrz których zdefiniowane są poszczególne ustawienia (setting).
Promuj

Brak komentarzy:

Prześlij komentarz

Posty powiązane / Related posts