在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,那么它应该是:
编辑 - 接口强制继承特定的基类吗?
答案 0 :(得分:4)
我希望尽可能远离我的代码 平台代码(GTK#所属)。
鉴于此,我宁愿返回IDocumentView
。
这样,您的代码将使用IDocumentView
接口,您的平台管道代码可以使用Gtk.*
类。
答案 1 :(得分:1)