我正在尝试创建一个通用类的接口(interface),但是实现类可以具有不同的参数。
例如

public interface IViewModel
{
    //...
    void ResetReferences();
}

// and then, in my class implementations, something like this:
public class LocationViewModel : IViewModel
{
    public void ResetReferences(List<StateProvinces> stateProvinces) //...
}

public class ProductViewModel : IViewModel
{
    public void ResetReferences(List<Color> colors, List<Size> sizes) //...
}
因此请注意,我想对ResetReferences命名约定进行标准化。我很确定我无法做到这一点,但是是否有一种可行的设计模式?例如在我的界面中,如下所示?
// variable parameters
void ResetReferences(params object[] list);
但是,如何使我进行类型检查或让它调用所需的实际方法签名等?
也许接口(interface)是使用错误的东西?也许只是一个基类和一些编码约定?
谢谢,

最佳答案

将args列表替换为实现相关接口(interface)的对象:

public interface IViewModel
{
    //...
    void ResetReferences(IResetValues vals);
}
我应该补充一点,IMO,ResetReferences()不应该接受参数...它应该重置为某个默认值,该默认值将特定于实现您的接口(interface)的各个类型...“Reset”是指,对我来说,“还原到初始状态” ...添加args意味着您可以控制它。

09-06 16:19