2016-06-09 65 views
2

首先要說的是,我不能使用內置的Properties.Settings,因爲這些設置存儲在由多個人使用的XML文件中(不是在同一時間,而是通過版本控制)。閱讀/寫入和訪問設置的最佳做法(不使用Windows設置)

我正在開發一個代碼生成工具,它允許用戶指定所有生成文件的輸出位置以及其他項目特定設置。

目前,在應用程序我有一個靜態類稱爲ProjectSettings這對於每個設置使用公共靜態參數的程序:

public static string Settings_ScreenDefinitions_C; 
public static string Settings_ScreenDefinitions_H; 
// Etc currently there are about 20 of these. 

是否有存儲和訪問這些thoughout項目的更好的方法?

xmlWriter.WriteElementString("ScreenDefinitionsFileC", ProjectSettings.Settings_ScreenDefinitions_C); 
xmlWriter.WriteElementString("ScreenDefinitionsFileH", ProjectSettings.Settings_ScreenDefinitions_H); 
// Again there is around 20 of these, one for each property and the same for reading them back out. 

當我添加更多的屬性我不禁覺得必須有:

其次,這些設置是使用一個讀/寫要求在上述ProjectSettings類每個設置存儲在XML一個更優雅的構造類的方法(也許是一個字典?)以及在XML中用於保存和讀取的更好方法?

任何建議/指針會很好。

+0

根據您的選擇,您可以使用應用程序設置'Properties.Settings','ini'文件,xml文件或序列化對象。 – 2016-06-09 08:45:51

回答

1

下面是我將如何使用枚舉和字典。我已經使用控制檯輸出來展示如何編寫字典的鍵和值。

using System; 
using System.Collections.Generic; 

namespace ConsoleApplication 
{ 
    class Program 
    { 
     private enum Settings 
     { 
      ScreenDefinitionsFileC, 
      ScreenDefinitionsFileH 
     }; 

     static void Main(string[] args) 
     { 
      var settings= new Dictionary<Settings, string>() 
      { 
       {Settings.ScreenDefinitionsFileC, "Setting 1"}, 
       {Settings.ScreenDefinitionsFileH, "Setting 2"} 
      }; 


      foreach (var setting in settings) 
      { 
       Console.WriteLine("{0} {1}", setting.Key, setting.Value); 
      } 

      Console.ReadKey(true); 
     } 
    } 
} 

這樣,您可以在寫入XML時枚舉設置,但也可以在程序的生命週期中查找特定設置。

+1

感謝這看起來更整齊,更容易擴展。我可能會更新我的應用程序來使用這樣的東西。非常感謝。 – TheGrovesy

+0

沒問題@TheGrovesy很高興它可以使用:-) –

0

enter image description here

我不知道該配置的完整列表,但我希望他們大多可以通過configurationManger添加不同的配置來控制,即如果添加「MyConfiguration」你可以打開之後項目設置(特別是預構建和後構建事件),並且這些配置僅適用於「myConfiguration」,因此只能通過選擇不同的配置來在不同配置之間切換。

+0

我想你已經誤解了我的問題......或者它的寫得不好:S – TheGrovesy