定义采用不同参数的接口方法

Enr*_*ico 11 .net c# oop

我的应用程序使用连接到PC的测量仪器.我希望能够使用来自不同供应商的类似仪器.

所以我定义了一个接口:

interface IMeasurementInterface
    {
        void Initialize();
        void Close();
    }
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.在测量之前,我需要设置仪器,这意味着不同仪器的参数非常不同.所以我想定义一个方法,它接受可以有不同结构的参数:

interface IMeasurementInterface
{
    void Initialize();
    void Close();
    void Setup(object Parameters);
}
Run Code Online (Sandbox Code Playgroud)

然后我会将对象投射到我需要的任何东西上.这是要走的路吗?

Eoi*_*ell 13

你可能最好想出一个抽象的"参数"类,它由每个不同的仪器参数扩展...例如然后使用泛型来确保将正确的参数传递给正确的类......

public interface IMeasurement<PARAMTYPE> where PARAMTYPE : Parameters
{
    void Init();
    void Close();
    void Setup(PARAMTYPE p);
}

public abstract class Parameters
{

}
Run Code Online (Sandbox Code Playgroud)

然后针对每个特定设备,

public class DeviceOne : IMeasurement<ParametersForDeviceOne>
{
    public void Init() { }
    public void Close() { }
    public void Setup(ParametersForDeviceOne p) { }
}

public class ParametersForDeviceOne : Parameters
{

}
Run Code Online (Sandbox Code Playgroud)


And*_*isi 0

那可能会起作用。另一种选择是在字典中传递参数。