【发布时间】:2015-12-16 07:05:35
【问题描述】:
我已经简化了我的内容:
class A : SomeClassICantAccess
{
IVIClass ivi = new IVIClass();
public A()
{
string address = "1111";
ivi.Initialize(address);
}
public void SendCommand(string cmd)
{
ivi.Send(cmd);
}
}
class B : SomeClassICantAccess
{
IVIClass ivi = new IVIClass();
public B()
{
string address = "2222";
ivi.Initialize(address);
}
public void SendCommand(string cmd)
{
ivi.Send(cmd);
}
}
class Main()
{
//I want my main to keep this format
A a = new A();
B b = new B();
a.SendCommand("commands");
b.SendCommand("commands");
}
如您所见,A 和B 类具有相同的SendCommand() 方法,但由于它们的ivis 使用不同的地址初始化,因此将命令发送到不同的仪器。
在两个不同的类中复制粘贴相同的方法似乎是错误的。但我真的希望我的 Main() 看起来像现在的样子 - 以便清楚 SendCommand() 是指仪器 A 还是仪器 B。
如何合并它们?
【问题讨论】:
-
你真的需要两节课吗?难道你不能有一个具有两个工厂方法的类来创建具有不同初始数据的实例吗?如果没有,您可能需要一个两者都派生自的抽象基类。
-
@Jon Skeet 合并两个类并在类中实例化两个不同的
ivis?但是我仍然需要两组SendCommand()方法——一组包含ivi1.Send(),另一组包含ivi2.Send() -
不,你只有一个类,但你会创建不同的类的instances。基本上与un-lucky给出的答案相同。
-
//我希望我的 main 保持这种格式 stackoverflow.com/a/34305991/985798
-
我错过了代码中的继承,对此感到抱歉。 A 类和 B 类实际上继承自我无法访问的类(DLL 引用)。有了这个,我怎样才能仍然创建一个基类并让 A 和 B 继承它?