我正在编写一个返回DataTable和IEnumerable的类。除了返回类型之外,我无法完全定义接口方法。所以,我希望我可以创建这个界面(显然,它不会编译):
interface IMyInterface
{
DataTable GetResults();
IEnumerable<string> GetResults();
}
那么,你将如何构造这两个函数,重命名它们,多个接口,参数?
我只是好奇你们将如何处理它,ty ...
答案 0 :(得分:14)
我会这样做:
interface IMyInterface
{
DataTable GetResultsAsTable();
IEnumerable<string> GetResultsAsSequence();
}
显然,C#不允许你有两个签名因返回类型而不同的方法(有趣的是CLR 允许这样做)。考虑到这一点,我认为最好给方法公共前缀并附加一个表示返回类型的后缀。
答案 1 :(得分:2)
你能这样做吗?
interface IMyInterface {
DataTable GetDTResults();
IEnumerable<string> GetIEResults();
}
答案 2 :(得分:1)
您可以使用out参数保持相同的方法名称:
interface IMyInterface
{
void GetResults(out DataTable results);
void GetResults(out IEnumerable<string> results);
}
答案 3 :(得分:0)
我会重命名第一种方法:
DataTable GetResultsDataTable();
答案 4 :(得分:0)
无论是作为接口还是作为常规类执行此操作,都无法编译,因为您有两个具有相同名称且具有相同无参数签名的方法。
此外,使用两种非常不同的类型返回方法结果的设计含义非常糟糕。