我有以下接口
public interface IReport<TInput, TOutput>
{
List<TOutput> GenerateReport(TInput input);
}
public interface IReport<TOutput>
{
List<TOutput> GenerateReport();
}
但现在我想拥有以下界面
public interface IReport<TInput, TOutput>
{
TOutput GenerateReport(TInput input);
}
有可能这样吗?
谢谢
答案 0 :(得分:2)
不,这是不可能的,因为您已经定义了IReport<TInput, TOutput>
接口。并且您无法将TOutput GenerateReport(TInput input);
移动到第一个接口,因为它已经提供了具有相同名称和相同输入参数的方法。在执行重载方法解析时不考虑输出参数。
但是考虑到你的方法的输出参数,我只会使用更有意义的名字:
public interface IReport<TInput, TOutput>
{
List<TOutput> GenerateReports(TInput input);
TOutput GenerateReport(TInput input);
}
答案 1 :(得分:0)
是的,有可能,你甚至可以用同一个类来实现它们。 :)
但是,您需要重命名第二个IReport,因为您已经拥有了该名称。
如果我是你,我会将方法声明从新界面移动到旧界面。
答案 2 :(得分:0)
您不能拥有两个具有相同名称和相同数量参数的接口。请注意,您不能简单地用约束来区分它们。
显然,您可以将旧界面更改为新规格。