2016-09-01 4 views
-2

У меня есть класс с двумя словарями. И я хочу получить доступ к этим словарям в другом классе. Это мой класс.получить доступ к элементам словаря в другом классе

{ 
    public class DictionaryLines 
    { 

     private Dictionary<string, string> line1dictionary; 
     private Dictionary<string, string> line2dictionary; 



     public DictionaryLines() 
     { 
      line1dictionary = new Dictionary<string, string>(); 
      line2dictionary = new Dictionary<string, string>(); 


      line1dictionary.Add("A1", "Miyapur"); 
      line1dictionary.Add("A2", "JNTU College"); 
      line1dictionary.Add("A3", "KPHB Colony"); 
      line1dictionary.Add("A4", "Kukatpally"); 
      line1dictionary.Add("A5", "Balanagar"); 
      line1dictionary.Add("A6", "Moosapeta"); 
      line1dictionary.Add("A7", "Bharath nagar"); 
      line1dictionary.Add("A8", "Erragadda"); 


      line2dictionary.Add("B1", "JBS"); 
      line2dictionary.Add("X3", "Parade Grounds"); 
      line2dictionary.Add("B3", "Secundrabad"); 
      line2dictionary.Add("B4", "Gandhi Hospital"); 
      } 
} 

как я могу назвать этот словарь в другой class..thank вы

+3

сделать их достоянием общественности? – Liam

+0

Добавить объект? –

ответ

1

Добавление двух открытых свойств, которые возвращают поля будет самым простым способом.

{ 
    public class DictionaryLines 
    { 

     private Dictionary<string, string> line1dictionary; 
     private Dictionary<string, string> line2dictionary; 

     public Dictionary<string, string> Line1Dictionary { get { return line1dictionary; } } 

     public Dictionary<string, string> Line2Dictionary { get { return line2dictionary; } } 

     public DictionaryLines() 
     { 
      line1dictionary = new Dictionary<string, string>(); 
      line2dictionary = new Dictionary<string, string>(); 


      line1dictionary.Add("A1", "Miyapur"); 
      line1dictionary.Add("A2", "JNTU College"); 
      line1dictionary.Add("A3", "KPHB Colony"); 
      line1dictionary.Add("A4", "Kukatpally"); 
      line1dictionary.Add("A5", "Balanagar"); 
      line1dictionary.Add("A6", "Moosapeta"); 
      line1dictionary.Add("A7", "Bharath nagar"); 
      line1dictionary.Add("A8", "Erragadda"); 


      line2dictionary.Add("B1", "JBS"); 
      line2dictionary.Add("X3", "Parade Grounds"); 
      line2dictionary.Add("B3", "Secundrabad"); 
      line2dictionary.Add("B4", "Gandhi Hospital"); 
      } 
} 
+0

спасибо Каллум .. Но мне нужно это в другой класс. – venkatesh

+0

Что ты говоришь? Я не понимаю, что вы подразумеваете под «в другой класс». Любой класс теперь может получить доступ к этим свойствам. –

+0

Возможно ли получить имя словаря с помощью ключа или значения – venkatesh

0
//Change the scope private to public like 
public Dictionary<string, string> line1dictionary; 
public Dictionary<string, string> line2dictionary; 
0

Вы можете получить доступ к закрытым членам другого класса с помощью отражения.

так:

public class DictionaryLines 
{ 

    private Dictionary<string, string> line1dictionary; 
    private Dictionary<string, string> line2dictionary; 



    public DictionaryLines() 
    { 
     line1dictionary = new Dictionary<string, string>(); 
     line2dictionary = new Dictionary<string, string>(); 


     line1dictionary.Add("A1", "Miyapur"); 
     line1dictionary.Add("A2", "JNTU College"); 
     line1dictionary.Add("A3", "KPHB Colony"); 
     line1dictionary.Add("A4", "Kukatpally"); 
     line1dictionary.Add("A5", "Balanagar"); 
     line1dictionary.Add("A6", "Moosapeta"); 
     line1dictionary.Add("A7", "Bharath nagar"); 
     line1dictionary.Add("A8", "Erragadda"); 


     line2dictionary.Add("B1", "JBS"); 
     line2dictionary.Add("X3", "Parade Grounds"); 
     line2dictionary.Add("B3", "Secundrabad"); 
     line2dictionary.Add("B4", "Gandhi Hospital"); 
    } 
} 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var cls = new DictionaryLines().GetType(); 

     var attrs = cls.GetFields(BindingFlags.NonPublic | BindingFlags.Instance); 

     foreach(var k in attrs) 
     { 
      Console.WriteLine("----------------------"+k.Name+"------------------------------"); 
      foreach (var j in (Dictionary<string, string>)k.GetValue(new DictionaryLines())) 
      { 
       Console.WriteLine("Key = "+j.Key +" & Value = "+j.Value); 
      } 
     } 

     Console.Read(); 
    } 
} 
+0

@ peeter6264 Я думаю, это может быть полезно для вас. –

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