我试图定义一个实现接口的接口和类,如下所示.接口中定义的方法接受一个字符串作为参数,其中方法的myClass2实现Execute采用不遵循接口定义的2个参数.
那就是问题所在.如何在接口中定义一个方法,该方法接受各种类型的n个参数?
请指教.谢谢.
public interface MyInterface
{
void Execute(string a);
}
public class myClass1 : MyInterface
{
public void Execute(string a)
{
Console.WriteLine(a);
}
}
public class myClass2 : MyInterface
{
public void Execute(string a, int b)
{
Console.WriteLine(a);
Console.WriteLine(b.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我正在考虑另一种方法.如果有人能告诉我这是否是更好的设计,我感激不尽.
public interface IParameter
{
Type ParameterType { get; set; }
string Name { get; set; }
object Value { get; set; }
}
public interface MyInterface
{
void Execute(Recordset recordSet, List<IParameter> listParams);
}
public class MyClass : MyInterface
{
public void Execute(Recordset recordSet, List<IParameter> listParams)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我传递了一个IParameter列表,其中包含需要发送的所有必需参数.
如果接口没有修复参数类型,调用者如何知道如何调用该方法?
你最接近的可能是:
public interface MyInterface
{
void Execute(params object[] args);
}
Run Code Online (Sandbox Code Playgroud)
然后,接口的实现必须处理传入的任意数量的参数 - 您不能拥有仅处理单个int参数的实现,尽管如果args包含除单个int值之外的任何内容,它当然可以抛出异常.
编辑:为了清楚,这很少是一个很好的设计.在一些非常弱的类型场景中,它可能是合适的,但除此之外,通常值得尝试找到更好的东西.
如果您可以提供有关您尝试做的更多信息,我们可能会为您提供更多帮助.
| 归档时间: |
|
| 查看次数: |
806 次 |
| 最近记录: |