gpt4 book ai didi

c# - 在接口(interface)中定义一个带有n个参数的方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:36 25 4
gpt4 key购买 nike

我正在尝试定义一个接口(interface)和实现接口(interface)的类,如下所示。接口(interface)中定义的方法接受一个字符串作为参数,其中方法 Execute 的 myClass2 实现采用 2 个不遵循接口(interface)定义的参数。

这就是问题所在。我如何在一个接口(interface)中定义一个方法,它接受 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());
}

}

编辑:我正在考虑另一种方法。如果有人能告诉我这是否是一个更好的设计,我将不胜感激。

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)
{

}
}

我正在传递一个 IParameter 列表,其中包含需要发送的所有必需参数。

最佳答案

如果接口(interface)没有固定参数类型,调用者如何知道如何调用方法?

最接近的是:

public interface MyInterface
{
void Execute(params object[] args);
}

接口(interface)的实现必须处理虽然传入的任意数量的参数 - 你不能有一个处理单个 int 参数的实现,尽管如果 args 包含除单个 int 值之外的任何内容,它当然会引发异常。

编辑:需要说明的是,这很少是一个好的设计。在一些非常弱类型的场景中,它可能是合适的,但除此之外,通常值得尝试找到更好的东西。

如果您能提供更多关于您正在尝试做的事情的信息,我们也许能为您提供更多帮助。

关于c# - 在接口(interface)中定义一个带有n个参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6888354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com