2016-11-14 86 views
-2

我是C#中的新成員; 請告訴我什麼是壞的;c#不能將類型''隱式轉換爲''

我有這樣的錯誤消息:

「無法隱式轉換類型 'Factory.ContactSite' 到 'Factory.Site'」

我的代碼:

class SiteFactory { 

    public enum SiteType { 
     Contact, Gallery, Info, News 
    } 

    public static Site makeSite(SiteType type) { 

     switch (type) { 

      case SiteType.Contact: 
       { 
        return new ContactSite(); //create new object 
       } 
      case SiteType.Info: 
       { 
        return new InfoSite();  //create new object 
       } 
      default: 
       return null; 
     } 
    } 
} 

// ----------------------------------------------- ------------------

class Site { 

    public bool generate(String patch) { 

     System.IO.FileStream f = new FileStream(patch, FileMode.Create); 
     return true; 
    } 
} 

// -------------------------------------------- ---------------- 主:

SiteFactory.makeSite(SiteFactory.SiteType.Contact).generate("file.txt"); 

ContactSite目前是空的

+7

那麼想必'ContactSite'不從'Site' ......這很難說得出,你還沒有表現出代碼。另外,我強烈建議您瞭解並開始遵循.NET命名約定。 –

+0

對。 'ContactSite'應該是一種'Site'嗎? –

+0

如果方法的返回類型是「Site」,那麼是的,從它返回的任何對象都必須是「Site」或派生自「Site」的類。 – Koneke

回答

2

我想你需要做的是從派生類InfoSiteContactSite什麼Site是這樣的:

public class ContactSite : Site 
{ 

} 

public class InfoSite : Site 
{ 

} 

當你撥打makeSite獲得一個情況下,你將不得不將它轉換成合適的type這樣的:

InfoSite infSite = SiteFactory.makeSite(SiteFactory.SiteType.Contact) as InfoSite; 
相關問題