是否实现了两个接口?

时间:2009-10-29 03:29:28

标签: c# oop interface

我正在编写一个返回DataTable和IEnumerable的类。除了返回类型之外,我无法完全定义接口方法。所以,我希望我可以创建这个界面(显然,它不会编译):

interface IMyInterface
    {
        DataTable GetResults();
        IEnumerable<string> GetResults();
    }

那么,你将如何构造这两个函数,重命名它们,多个接口,参数?

我只是好奇你们将如何处理它,ty ...

5 个答案:

答案 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)

无论是作为接口还是作为常规类执行此操作,都无法编译,因为您有两个具有相同名称且具有相同无参数签名的方法。

此外,使用两种非常不同的类型返回方法结果的设计含义非常糟糕。