2012-09-19 56 views
1

我怎樣才能在實體框架?:使用虛擬財產的接口使用虛擬財產

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

拋出一個錯誤虛擬關鍵字,但如果我不這樣說:

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.... 
} 

回答

2

它拋出,因爲的錯誤不是public。它與virtualComments上有效。

在接口中使用虛擬是無效的,因爲它沒有意義。在定義接口時,實現類必須實現其所有成員。虛擬關鍵字意味着派生類可以覆蓋現有的實現,但接口沒有實現。

+0

由於CommentableId沒有被公開,所以它不會拋出錯誤,它會拋出一個錯誤,因爲「public virtual ICollection Comments {get; set;}」不是接口強加的實現,即:沒有虛擬。 – sports