2017-11-21 11 views
0

私はC#でプログラミングしており、マシン設定でXMLを書き込むプログラムを作ろうとしています。リストされた辞書またはクラス

現在のところ、私はリストを使用していますが、余分なカテゴリを追加する必要はありません。現時点では

状況:設定とその値と異なる製品、辞書と

productlist = new List<Dictionary<string, string>>(); 

リスト。設定とその値を持つカテゴリと辞書と異なる製品と

productlist = new List<Dictionary<string, Dictionary<string, string>>>(); 

リスト、辞書:

は、しかし、今のカテゴリーで私のようなものが必要。

これを行うのが最も簡単な方法ですか?またはすることができます私はより良い利用クラス(非常に彼らと一緒に経験していない。)

編集:

この
製品1のようなもの:値を持つ
-Category1
--SettingA。
- 設定Bに値を設定します。値の値
と-Category2

--SettingC --SettingD

Product2:値
-Category1
--SettingA。
- 設定Bに値を設定します。
- カテゴリ2
- 値を設定するC;
- 値を設定しています。

など

+0

[C#のツリーデータ構造]の重複している可能性があります(https://stackoverflow.com/questions/66893/tree-data-structure-in-c-sharp) – jAC

+0

ありがとうございました。 ) – Mausdb

+0

したがって、あなたが知っていれば、あなたのアプリケーションで知られている各Catogorieのエントリを持つリストが得られます。そして、それぞれの製品は独自の製品やものを持っていますか? – Dragonvil

答えて

2

「クラス」を試してください。

、あなたは製品のすべての設定を印刷したい場合は、ループを使用するオブジェクトのリストを作成し、

List<Product> lstProducts = new List<Product>(); 
lstProducts.Add(new Product() 
{ 
    ProductID = 1001, 
    Name = "Product1", 
    Categories = new List<Category>() 
    { 
     new Category(){ 
      Name ="Category1", 
      Settings =new Dictionary<string, string>{ 
       { "SettingA", "val1" }, 
       { "SettingB", "val2" } } 
     }, 
     new Category(){ 
      Name ="Category2", 
      Settings =new Dictionary<string, string>{ 
       { "SettingA", "val1" }, 
       { "SettingB", "val2" } } 
     }, 

    } 
}); 

などのデータを追加し、よう

public class Product 
{ 
    public int ProductID { get; set; } 
    public string Name { get; set; } 
    public List<Category> Categories { get; set; } 
} 
public class Category 
{ 
    public string Name { get; set; } 
    public Dictionary<string, string> Settings { get; set; } 

} 

をモデル製品のクラスとカテゴリを作成します。 、

foreach (var item in lstProducts[0].Categories) 
{ 
     foreach (var vals in item.Settings.Values) 
     { 
      Print(vals); 
     } 
} 
+0

これを使用すると、特定の製品のカテゴリにあるすべての設定をどのように印刷できますか? – Mausdb

+0

次のように設定にアクセスできます: 'lstProducts [0] .Categories [0] .Settings [0]' –

1

ネストされた辞書の代わりにクラスを使用することをお勧めします。 そして、あなたがこのような設定のリストにあなたの製品を作成することができProductSetting

public class ProductSetting 
{ 
    #region Variables 
    private string _Setting1 = string.Empty; 
    private string _Setting2 = string.Empty; 
    //... 
    #endregion Variables 

    #region Properties 
    public string Setting1 
    { 
     get 
     { 
      return this._Setting1; 
     } 
     set 
     { 
      this._Setting1 = value; 
     } 
    } 

    public string Setting2 
    { 
     get 
     { 
      return this._Setting2; 
     } 
     set 
     { 
      this._Setting2 = value; 
     } 
    } 
    #endregion Properties 

    #region Constructors 
    public ProductSetting() 
    { 
    } 

    public ProductSetting(string setting1, string setting2) 
    { 
     this.Setting1 = setting1; 
     this.Setting2 = setting2; 
    } 
    #endregion Constructors 
} 

とクラスProduct

public class Product 
{ 
    #region Variables 
    private string _Name = string.Empty; 
    private string _Category = string.Empty; 
    private List<ProductSetting> _Settings = new List<ProductSetting>(); 
    #endregion Variables 

    #region Properties 
    public string Name 
    { 
     get 
     { 
      return this._Name; 
     } 
     set 
     { 
      this._Name = value; 
     } 
    } 

    public string Category 
    { 
     get 
     { 
      return this._Category; 
     } 
     set 
     { 
      this._Category = value; 
     } 
    } 

    public List<ProductSetting> Settings 
    { 
     get 
     { 
      return this._Settings; 
     } 
     set 
     { 
      this._Settings = value; 
     } 
    } 
    #endregion Properties 

    #region Constructors 
    public Product() 
    { 
    } 

    public Product(string name, string category, List<ProductSetting> settings) 
    { 
     this.Name = name; 
     this.Category = category; 
     this.Settings = settings; 
    } 
    #endregion Constructors 
} 

クラスを作成します。

ProductSetting setting = new ProductSetting('setting abc','setting def'); 
List<ProductSetting> settingsList = new List<ProductSetting>(); 
settingsList.Add(setting); 
Product product = new Product('productname','productcategory',settingsList); 

をあなたが作成することができた後、あなたの製品のリスト:

List<Product> productsList = new List<Product>(); 
productsList.Add(product); 
関連する問題