2012-03-20 36 views
0

在某些情況下,我希望我的方法返回XDocument對象,並且在其他情況下返回XmlDocument爲不同返回類型的方法提出正確的設計

解決方案我看到:

  1. 使用返回類型object

  2. 創建兩個不同的方法(DIFF的名稱);一個返回XDocument和其他返回XmlDocument

  3. 使用不同的out參數類型創建方法過載。

你能提出一個好的設計嗎?

+2

第二種解決方案是比別人更好(首先特別是一個令人難以置信的壞主意)。但是我可以建議的最好的建議是a)告訴我們你想達到的目標*,而不是你認爲應該如何實現,b)更好地熟悉*抽象*的概念。 – Jon 2012-03-20 09:45:31

回答

2

你可以使用一個通用的方法:

public T GetDocument<T>(); 

返回時稱爲GetDocument<XDocument>XDocument在調用時,GetDocument<XmlDocument>XmlDocument

在這個方法中,你可以做

if (T is XmlDocument) ... 
else if (T is XDocument) ... 
else throw new ArgumentException("Invalid type for T"); 
0

你在用什麼語言? vb.net?

if <condition 1> then 
Return XDocument 
else if <condition 2> then 
Return XmlDocument 
End if 
0

我會說創建一個方法,儘可能多的代碼共享/保護。然後,當你必須專門處理返回給調用者的內容時,創建兩個強類型的公共方法。

0

我想,你可以在太以下方式重載返回類型....

   public interface IXDocument 
       { 
        XDocument GetDocument(string str); 
       } 
       public interface IXMLDocument 
       { 
        XMLDocument GetDocument(string str); 
       } 



      public class Document : IXDocument, IXMLDocument 
      { 
       public XDocument IXDocument.GetDocument(string str) 
       { 
        // return XDocument 
       } 
       public XMLDocument IXMLDocument.GetDocument(string str) 
       { 
        // return XMLDocument 
       } 

      } 


      XDocument returnedXDocument = ((IXDocument)Instance of Docuement).GetDocument("value"); 
      // - and/or 
      XMLDocument returnedXMLDocument = ((IXMLDocument)Instance of Docuement).GetDocument("value"); 
相關問題