c#不能隐式转换类型'';至'';
我是C#的新手; 请告诉我什么是坏的 此消息中有一个错误: “无法将类型'Factory.ContactSite'隐式转换为'Factory.Site'” 我的代码: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) {
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
派生classInfoSite
和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
派生的类。