2015-05-09 5 views
2

Это довольно простой вопрос, у меня есть 3 класса (см. Код ниже), называемые проектами, сайтами и колодцами. Класс проектов будет списком, но я бы хотел, чтобы он содержал список сайтов, а затем список сайтов будет содержать список колодцев. Не уверен, что это разрешено. Я немного поработал, и большинство решений, которые я видел, говорили больше о том, как создать тип списка, не зная, какой класс он будет. Я знаю, что у меня будет, так что это не проблема.C# Список <t> в классе

Just to give this a visual 

    list<t> Projects 
      list<t> Sites 
        list<t> Wells 


namespace EDMNoCost 
{ 
    public partial class Form1 : Form 
    { 
     public class wells 
     { 
      public string c_wellname { get; set; } 
      public string well_id { get; set; } 
      public string site_id { get; set; } 


      public wells(string c_wellname, string well_id,string site_id) 
      { 
       this.c_wellname = c_wellname; 
       this.well_id = well_id; 
       this.site_id = site_id; 
      } 
     } 
     public class sites 
     { 
      public string c_wellname { get; set; } 
      public string site_id { get; set; } 
      public string project_id { get; set; } 


      public sites(string c_wellname, string site_id, string project_id) 
      { 
       this.c_wellname = c_wellname; 
       this.site_id = site_id; 
       this.project_id = project_id; 
      } 
     } 

     public class projects 
     { 
      public string project_name { get; set; } 
      public string project_id { get; set; } 
      public string site_id { get; set; } 




      public projects(string project_name, string project_id, string site_id) 
      { 
       this.project_name = project_name; 
       this.project_id = project_id; 
       this.site_id = site_id; 
      } 
     } 
     public List<projects> projInfo = new List<projects>(); 
     public List<sites> siteInfo = new List<sites>(); 
     public List<wells> well_list = new List<wells>(); 
    } 
} 
+1

Что на ваш вопрос именно? Вы спрашиваете, возможно ли иметь колодцы на сайте, но ваш код помещает их вне класса. Они не являются частью содержащего класса – dmaij

+1

Просто подсказка для именования: если объект является проектом, назовите класс Project. То же самое для Site, Well и т. Д. Также полезно использовать капитализацию. –

ответ

0

это законно иметь такую ​​структуру и ваши близкие, вы должны добавить 1 свойство для проекта и сайта, то вам необходимо изменить каждый конструктор для инициализации свойства

, когда это будет сделано, вы можете используйте свой код следующим образом;

2 Проекты

первый один из двух сайтов

второй один уже 1 сайт и 1 хорошо

using System.Collections.Generic; 

namespace ConsoleApplication1 
{ 
    class Program 
    {   
     static void Main(string[] args) 
     { 
      List<projects> projInfo = new List<projects>(); 

      projInfo.Add(new projects("1", "1", "1")); 
      projInfo.Add(new projects("2", "2", "2")); 

      projInfo[0].siteInfo.Add(new sites("10", "10", "10")); 
      projInfo[0].siteInfo.Add(new sites("20", "20", "20")); 

      projInfo[1].siteInfo.Add(new sites("30", "30", "30")); 

      projInfo[1].siteInfo[0].well_list.Add(new wells("100", "100", "100")); 
     } 
    } 

    public class wells 
     { 
      public string c_wellname { get; set; } 
      public string well_id { get; set; } 
      public string site_id { get; set; } 

      public wells(string c_wellname, string well_id,string site_id) 
      { 
       this.c_wellname = c_wellname; 
       this.well_id = well_id; 
       this.site_id = site_id; 
      } 
     } 
     public class sites 
     { 
      public string c_wellname { get; set; } 
      public string site_id { get; set; } 
      public string project_id { get; set; } 
      public List<wells> well_list { get; set; } //new property 

      public sites(string c_wellname, string site_id, string project_id) 
      { 
       this.c_wellname = c_wellname; 
       this.site_id = site_id; 
       this.project_id = project_id; 
       well_list = new List<wells>(); //init the property 
      } 
     } 

     public class projects 
     { 
      public string project_name { get; set; } 
      public string project_id { get; set; } 
      public string site_id { get; set; } 
      public List<sites> siteInfo { get; set; } //new property 

      public projects(string project_name, string project_id, string site_id) 
      { 
       this.project_name = project_name; 
       this.project_id = project_id; 
       this.site_id = site_id; 
       siteInfo = new List<sites>(); //init the property 
      } 
     } 

} 
0

Это абсолютно легально, просто добавить их как общественные свойства:

public class projects 
{ 
    public List<sites> siteInfo { get; set; } 
    ... 
    public projects (string project_name, string project_id, string site_id) 
    { 
     this.project_name = project_name; 
     this.project_id = project_id; 
     this.site_id = site_id; 
     this.siteInfo = new List<sites>(); // You can add stuff to the List here if you want, or you can just initialize it. 
    } 
} 

Вы можете сделать то же самое для других классов.

Смежные вопросы