首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中,为什么我不能从接口签名具有基接口类型作为返回类型的函数返回派生接口类型?

在C#中,为什么我不能从接口签名具有基接口类型作为返回类型的函数返回派生接口类型?
EN

Stack Overflow用户
提问于 2021-05-21 05:01:03
回答 2查看 81关注 0票数 0

我收到编译错误:错误CS0535 'COITemplateWriter‘没有为以下代码实现接口成员'iTemplateWriter.Write(iTemplateModel)’TemplateService:

代码语言:javascript
运行
复制
    public COITemplate Write(COITemplateModel model)
    {
        throw new NotImplementedException();
    }

上述方法的接口签名如下:

代码语言:javascript
运行
复制
public interface iTemplateWriter
{
    public iTemplate Write(iTemplateModel model);
}

类型COITemplate实现iTemplate接口,类型COITemplateModel实现iTemplateModel接口,那么为什么这段代码会失败呢?如果接口需要方法返回实现iTemplate的任何内容并将实现iTemplateModel的任何内容作为参数进行编译,这不是很合理吗?

EN

Stack Overflow用户

发布于 2021-05-21 05:09:50

如果没有看到COITemplate的其余部分,假设它不是一个接口,那么您应该只需要让函数返回接口类型本身。

代码语言:javascript
运行
复制
public iTemplateWriter Write(COITemplateModel model)
{
   // if the "COITemplateModel" class is an iTemplateWriter you could just return that back.
   return model;

   // OR if some other object you are working with is that interface.
   return (iTemplateWrite)OfWhateverClassYouAreTrying;

}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67627878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档