繁体   English   中英

替代/禁用控制组件以进行开发/测试

[英]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 ,只需将其放入debugrelease文件夹中。

这样,您就可以完全解耦硬件特定的东西。

这样做的更多优势是

  • 您可以为不同的硬件编写不同的库。
  • 您可以独立于使用者测试这些库。

希望这对您有所帮助。

您所需要做的就是使用“控制反转”模式。 这是一种模式,您可以在其中创建接口来定义类所需的方法,然后可以创建两个(或多个)对象,“真实”对象或模拟对象。

在这里阅读更多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM