编译器在编译期间跳过foreach()循环?

时间:2014-06-17 08:38:49

标签: c# wpf mvvm

我创建了一个方法,我通过telnet配置网络设备。问题是我有多个值,我使用foreach()循环配置,但编译器正在跳过该循环。我正在使用C#WPF和模式是MVVM。这是我的代码:

public ObservableCollection<VLANSPropertyClass> vlan { get; set; }

 public bool VLAN()
        {
            vlan = new ObservableCollection<VLANSPropertyClass>();

            string _command;

            _command = "config t \n";
            WriteAPCommand(_command);

            ReadAPCommand();

            foreach(VLANSPropertyClass v in vlan)
            {
                Console.WriteLine("-----------------FOREACH STARTED----------------");
                _command = "vlan " + v.vid + "\n";
                WriteAPCommand(_command);

                ReadAPCommand();

                _command = "name " + v.vname + "\n";
                WriteAPCommand(_command);

                ReadAPCommand();

                _command = "interface " + v.vid + "\n";
                WriteAPCommand(_command);

                ReadAPCommand();

                _command = "ip address " + v.ip + " " + v.mask + "\n";
                WriteAPCommand(_command);

                ReadAPCommand();

                _command="exit\r";
                WriteAPCommand(_command);

                ReadAPCommand();

                _command = "interface " + v.vports + "\n";
                WriteAPCommand(_command);

                ReadAPCommand();

                _command = "switchport access " + v.vid + "\n";
                WriteAPCommand(_command);

                ReadAPCommand();

                _command = "copy runningconfig startupconfig\n";
                WriteAPCommand(_command);

                ReadAPCommand();

            }
            Console.WriteLine("-----------------FOREACH COMPLETED----------------");
            return true;

        }

VLANSProperty类是:

public class VLANSPropertyClass
    {
        public string vname { get; set; }

        public int S_No { get; set; }

        public string vid { get; set; }

        public string ip { get; set; }

        public string mask { get; set; }

        public string vports { get; set; }
    }

bool Vlan()函数出现在Model中,它正在从ViewModel调用。任何人都可以告诉我为什么我的代码没有正确执行。

1 个答案:

答案 0 :(得分:1)

您正在创建新的ObservableCollection<VLANSPropertyClass>(),但它是空的。因此,当您迭代它时,您永远不会在循环体中结束。您需要在某处填充您的集合,然后才能迭代它。 (你可能希望ReadAPCommand填充它,但你还没有告诉我们任何相关信息。)

考虑一下您期望数据来自哪里,以及您希望它如何进入您的收藏。

您还应该仔细考虑您的属性和方法名称 - 目前它们都没有遵循正常的.NET约定,而您的VLAN方法根本没有描述它对的含义