如何让接口方法具有不同数量和类型的参数? C#
How to have interface methods with a different number and type of parameters? C#
假设我有多个 类,它们都具有相同的操作(在我的例子中,我正在创建一个插件框架,所有这些:加载、运行、处置),我想使用一个接口,这样我就可以创建一个 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
}
}
您可以创建一个接口,例如 ILoadArgument
为每个 IPlugin 实现创建一个 class,例如 FriendlyPlatArgument、SysExArgument 等。这些 dto classes 可以实现您创建的 ILoadArgument 接口。可能他们都需要一个共同的 属性 例如 CreatedAt 也可以转到界面。
现在您的 IPlugin 接口可以将 Load 方法定义为
空载(ILoadArgument arg);
您还可以将其通用化为:
空载(T arg)其中T:ILoadArgument{°°°}
假设我有多个 类,它们都具有相同的操作(在我的例子中,我正在创建一个插件框架,所有这些:加载、运行、处置),我想使用一个接口,这样我就可以创建一个 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
}
}
您可以创建一个接口,例如 ILoadArgument
为每个 IPlugin 实现创建一个 class,例如 FriendlyPlatArgument、SysExArgument 等。这些 dto classes 可以实现您创建的 ILoadArgument 接口。可能他们都需要一个共同的 属性 例如 CreatedAt 也可以转到界面。
现在您的 IPlugin 接口可以将 Load 方法定义为
空载(ILoadArgument arg);
您还可以将其通用化为:
空载(T arg)其中T:ILoadArgument{°°°}