2009-12-20 100 views
0

在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?

编辑 - 可以从特定基类继承的接口强制?

回答

4

我喜欢保持平台代码(其中GTK#落在下)出我的代码尽可能。

鉴于此,我宁愿返回IDocumentView

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

相关问题