1

如何在实体框架的接口中使用虚拟属性?:

public interface ICommentable
{
    int CommentableId { get; set; }
    virtual ICollection<Comment> Comments { get; set; }
}

这会为 virtual 关键字引发错误,但如果我这样做:

public interface ICommentable
{
    int CommentableId { get; set; }
    ICollection<Comment> Comments { get; set; }
}

然后这个(下)抛出一个错误(“不实现......”)

public class Something : ICommentable
{
    int CommentableId { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
    ...more properties....
}
4

1 回答 1

2

它会引发错误,因为CommentableIdis not publicvirtual它与放置在Comments有效的类中无关。

在接口中使用 virtual 是无效的,因为它没有意义。定义接口时,实现类必须实现其所有成员。virtual 关键字意味着派生类可以覆盖现有的实现,但接口没有实现。

于 2012-09-19T22:02:39.107 回答