c#不能隐式转换类型'';至'';

c#不能隐式转换类型'';至'';,c#,type-conversion,C#,Type Conversion,我是C#的新手; 请告诉我什么是坏的 此消息中有一个错误: “无法将类型'Factory.ContactSite'隐式转换为'Factory.Site'” 我的代码: class SiteFactory { public enum SiteType { Contact, Gallery, Info, News } public static Site makeSite(SiteType type) { switch (type) {

我是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;
    }
}
//------------------------------------------------------------ 主要内容:


class
ContactSite
当前为空

我想您需要做的是从
Site
派生class
InfoSite
ContactSite
,如下所示:

public class ContactSite : Site
{

}

public class InfoSite : Site
{

}
InfoSite infSite = SiteFactory.makeSite(SiteFactory.SiteType.Contact) as InfoSite;
当您调用
makeSite
以获取实例时,必须将其强制转换到右侧的
类型中,如下所示:

public class ContactSite : Site
{

}

public class InfoSite : Site
{

}
InfoSite infSite = SiteFactory.makeSite(SiteFactory.SiteType.Contact) as InfoSite;

很可能,
ContactSite
不是从
Site
派生出来的。。。很难说,因为您还没有显示代码。另外,我强烈建议您了解并开始遵循.NET命名约定。对。
ContactSite
是否应该是一种
Site
?如果方法的返回类型是
Site
,那么是的,从它返回的任何对象都需要是
Site
,或者是从
Site
派生的类。