获取字典元素到另一个类的访问权限

时间:2016-09-01 08:44:59

标签: c# dictionary

我有一个包含两个词典的课程。我想在其他课程中访问这些词典。这是我的班级。

{
    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");
           }
}

我如何将这本词典称为其他类...谢谢你

3 个答案:

答案 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");
           }
}

答案 1 :(得分:0)

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

答案 2 :(得分: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();
    }
}