2009-12-20 102 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.*類。

相關問題