类实现接口作为C#中的方法返回类型

时间:2009-12-20 17:37:11

标签: c# oop

在C#中是否可以将方法的返回类型定义为另外实现某个接口的类?

例如,在GTK#应用程序中,我希望有一个小部件来显示文档。我想提供该窗口小部件的几个实现 - 一个基于Gecko,一个基于Webkit,另一个基于常规Gtk.TextView。显然,所有这些类都必须从Gtk.Widget继承(间接)。我会声明一个所有这些小部件都会实现的接口。最后,我将创建一个工厂方法,根据例如创建适当的小部件。可用的库。工厂方法应该返回什么类型?

interface IDocumentView {...};

class GeckoDocumentView : Gecko.Webcontrol, IDocumentView {...};

class WebKitDocumentView : WebKit.WebView, IDocumentView {...};

class BasicDocumentView : Gtk.TextView, IDocumentView {...};

class DocumentViewFactory {
    static IDocumentView CreateView () {...};
}

DocumentViewFactory.CreateView方法应该返回什么类型?如果无法同时指定Gtk.Widget和IDocumentView,那么它应该是:

  • Gtk.Widget(基类),后来会被转换为IDocumentView?
  • IDocumentView(接口),稍后会转换为Gtk.Widget?

编辑 - 接口强制继承特定的基类吗?

2 个答案:

答案 0 :(得分:4)

我希望尽可能远离我的代码 平台代码(GTK#所属)。

鉴于此,我宁愿返回IDocumentView

这样,您的代码将使用IDocumentView接口,您的平台管道代码可以使用Gtk.*类。

答案 1 :(得分:1)

尝试使用Abstract Factory Pattern

相关问题