C#,从字符串调用类的实例
我一直在努力寻找一种从用户定义的输入中调用类实例的方法。
本质上,我想从我的StandardVehicle类中调用一个已经定义的实例,但是问题是我正在调用的实例的名称是由用户在窗体上的组合框中选择的来定义的。
这就是我以为它将被格式化的方式,但是当我尝试调用该实例时说我无法从字符串完全转换为StandardVehicle时出现错误。
StandardVehicle VauxhallB = new StandardVehicle();
VauxhallB.Model = \"B\";
VauxhallB.Manufacturer = \"Vauxhall\";
VauxhallB.Doors = 5;
VauxhallB.HorsePower = 200;
VauxhallB.Transmission = \"Manual\";
VauxhallB.Year = 2009;
VauxhallB.Cylinders = 6;
VauxhallB.Seats = 7;
VauxhallB.Price = 17000;
VauxhallB.Registration = \"abc1243\";
StandardVehicle objname = comboBox1.Text;
我假设这只是格式化字符串的一种情况,但是我一直在搜索数小时,无法弄清楚将其定义为实例需要哪种格式。
任何帮助,将不胜感激。
问候,
S.
没有找到相关结果
已邀请:
6 个回复
晤默报
填充以将其从字符串映射到对象,然后查找与用户指定名称相对应的对象。
莽缓逢
只是计算机的符号。用户不应引用您的变量名-尽管可能可以通过反射来引用,但这是编程的一个复杂方面。 更好的方法是将每个实例与
中的字符串\“ name \”关联,然后进行查找。就像是:
此外,如果只对局部变量使用小写字母名称,以更好地将它们与类,公共方法和属性区分开,则通常更具可读性。
街茬
如果
将起作用。 此处有更多信息: http://msdn.microsoft.com/zh-CN/library/w3f99sx1.aspx http://msdn.microsoft.com/zh-CN/library/wccyzw83.aspx
骇毖煽洁铂
当然,您的comboBox应该绑定到StandardVehicles的集合...如果没有,则按照已经建议的方式去字典。
犯痪桂涛杭
不是很舒服,但可能会工作。添加一些错误处理。或XML加载或其他格式。
砷竣阿
之所以不那么理想,是因为每次您要添加新的汽车类型时,都必须修改原始代码块并进行风险回归。如果您对此解决方案感到满意,并且不在乎,可以立即停止阅读。 还在那儿? 此模式称为“条件调度程序”。有两种主要的策略可以改进它:重构为Command模式(之所以有上限是因为它是“四人一团”模式),或者是更广泛地实现称为“控制反转”的概念。如果您有兴趣,请参阅以下Google条款: “重构有条件的调度程序” \“控制反转\”。 祝好运。