小编Laz*_*low的帖子

接口方法返回类型是实现接口的类

我无法理解界面.在这里搜索了类似的问题后,我想出了以下界面,用于定义所有类所需的CRUD操作:

public interface IData<T>
{
    IData<T> Select(int id);
    List<T> SelectMultiple();
    void Insert();
    void Update();
    void Delete();
}
Run Code Online (Sandbox Code Playgroud)

然后在我的部分类中实现:

public partial class Post : IData<Post>
{
    public IData<Post> Select(int id)
    {
        MyDataContext dc = MyDataContext.Create();
        return dc.Posts.Single(p => p.PostID == id);
    }

    public List<Post> SelectMultiple()
    {
        MyDataContext dc = MyDataContext.Create();
        return dc.Posts.ToList();
    }

    // Update() and Delete() declarations
}
Run Code Online (Sandbox Code Playgroud)

这个都编译得很好,但是如果我尝试使用Post Select()方法:

Post p = new Post().Select(1);
Run Code Online (Sandbox Code Playgroud)

失败,无法将类型'IData'隐式转换为'Post'.存在显式转换(您是否错过了演员?)

这是有道理的,但我如何拥有它以便它不需要演员?我希望Select返回一个帖子(但不要将Post定义为接口级别的返回类型).我是否误解了界面,或者我可以做出快速修改?

c# interface partial-classes

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×1

interface ×1

partial-classes ×1