[英]substitute/disable control components for development/testing
我有一个VB表单,其中包含用于与要部署的机器上的某些硬件(摄像机,电动机等)接口的控件,但是通常我不在该机器所在的位置(这是3个小时的车程)远)。 我正在尝试在笔记本电脑上进行项目工作,但是显然控件会产生各种错误,因为它们无法与硬件对话。
我当时正在考虑用自己的模拟控件类替换控件类型,然后使用#if指令来控制我是为真实机器还是为测试机器构建。 问题是,某些受影响的代码在表单设计器生成的代码部分中; 表单设计器会自动尝试“更正”我的更改,因此我必须一直手动将其退回,并记住不要将表单设计器的编辑提交到版本控制中。
关于如何解决此问题的任何建议,或者采取其他解决方法,以便我(和我的同事)可以在远离现场的情况下工作?
我正在VB2005中工作。
您可以使用Interface来解决此问题。 假设IHardware
是界面,请在此定义摄像机等所需的所有功能。 现在,在单独的类库中实现此接口。 该库将处理对您的硬件代码的所有调用。 说这是WorkLibrary
。 现在,在表单中,您将使用此界面调用WorkLibrary
。
接口
interface IHardware
{
void Load(); //Example
}
类库
class WorkClass : IHardware
{
public void Load()
{
}
}
在表单内部,调用Load
方法,您将
//Fully Qualified name of the WorkClass, you can store this in config file also
string provider = "WorkLibrary.WorkClass, WorkLibrary";
IHardware hardWare = Activator.CreateInstance(Type.GetType(provider, true));
hardWare.Load();
通过这种方法,您不必在表单项目中引用WorkLibrary.dll
,只需将其放入debug
或release
文件夹中。
这样,您就可以完全解耦硬件特定的东西。
这样做的更多优势是
希望这对您有所帮助。
您所需要做的就是使用“控制反转”模式。 这是一种模式,您可以在其中创建接口来定义类所需的方法,然后可以创建两个(或多个)对象,“真实”对象或模拟对象。
在这里阅读更多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.