如何使用不同数量和类型的参数的接口方法? C#

时间:2018-06-08 22:37:20

标签: c# .net design-patterns computer-science-theory

假设我有多个类都具有相同的操作(在我的情况下,我创建了一个插件框架,所有:Load,Run,Dispose),我想使用一个接口,所以我可以创建一个PluginFactory处理初始化。问题是他们都需要截然不同的数据,所以方法是相同的但参数会有所不同。是否有最佳实践或设计模式,我可以使用接口和多态,同时将不同的数据传递给方法?

泛型不一定能解决我的问题,因为每个插件的参数数量和类型都不同。我正在考虑在实现它们时在方法中创建一个容器,从全局源中检索参数,因此我可以在测试时将不同的依赖项注入到该全局源中,但我不确定是否会破坏任何抽象规则。

编辑:

这是一个代码示例:

 public interface IPlugin
    {
        void Load();
    }

    public Hubbub : IPlugin
    {
        public void Load(int individualId, IApiDataSource apiDataSource)
        {
           //code
        }
    }

public class SysEx : IPlugin
{
    Load(OAuthToken token, string connString, User user)
    {
        //code
    }
}

public class FriendPlat: IPlugin
{
    Load(string username, string password)
    {    
        //code
    }
}

1 个答案:

答案 0 :(得分:1)

您可以创建一个界面,例如ILoadArgument

为每个IPlugin实现创建一个类,例如FriendlyPlatArgument,SysExArgument等。这些dto类可以实现您创建的ILoadArgument接口。可能是他们都需要一个共同的属性,例如CreatedAt,它也可以转到界面。

现在您的IPlugin接口可以将Load方法定义为

Void Load(ILoadArgument arg);

然后你可以把它变成通用的:

Void Load(T arg)其中T:ILoadArgument {°°°}