在C#中,有可能将某个方法的返回类型定义为某些额外实现某个接口的类?在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?
编辑 - 可以从特定基类继承的接口强制?