gpt4 book ai didi

.net - 替换/禁用用于开发/测试的控制组件

转载 作者:行者123 更新时间:2023-11-28 20:57:32 24 4
gpt4 key购买 nike

我有一个 VB 表单,其中包含用于与要部署的机器上的某些硬件(摄像机、电机等)接口(interface)的控件,但我通常不在所述机器的位置(它是 3小时车程)。我试图在我的笔记本电脑上处理这个项目,但显然控件会产生各种错误,因为它们无法与硬件通信。

我正在考虑用我自己的模拟控件类替换控件类型,然后使用#if 指令来控制我是为真实机器还是为我的测试机器构建。问题是,一些受影响的代码位于表单设计器生成的代码部分;表单设计器会自动尝试“更正”我的更改,所以我必须一直手动将它们放回原处,并尽量记住不要将表单设计器的编辑提交到版本控制中。

关于我如何解决这个问题的任何建议,或者可能是一种不同的方法,以便我(和我的同事)可以在离开网站时工作?

我在 VB2005 中工作。

最佳答案

您可以使用接口(interface)来解决这个问题。假设 IHardware 是接口(interface),在这里定义您需要的摄像机等所有功能。现在在单独的类库中实现这个接口(interface)。该库将处理对您的硬件代码的所有调用。假设这是 WorkLibrary。现在在表单中,您将使用此接口(interface)调用您的 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文件夹。

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

更多的优势可以是

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

希望对你有帮助。

关于.net - 替换/禁用用于开发/测试的控制组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9109302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com