2017-10-04 3 views
1

クラスに仮想コレクションタイプを要求するためにインターフェイスを作成する可能性はありますか?バーチャルコレクションのインターフェイス

よろしく

namespace Models.Entities 
{ 

    public partial class FileType : IMyInterface 
    { 
     public long CompanyId { get; set; } 
     public long FileTypeId { get; set; } 
     public string AcceptType { get; set; } 

     //IMyInterface contract 
     public virtual ICollection<Translation> FileTypeTranslations { get; set; } 

     public FileType() 
     { 
      this.FileTypeTranslations = new HashSet<FileTypeTranslation>(); 
     } 
    } 

    public class Translation : EntityTranslation<long, FileType> 
    { 
     [Required] 
     public string TypeName { get; set; } 
    } 
} 

答えて

2

virtualは、実装の詳細ではない契約(すなわちinterface)詳細図です。


仮想キーワードは、メソッド、プロパティ、インデクサ、またはイベントの宣言を変更しそれが派生クラスでオーバーライドすることを可能にするために使用されます。

私はあなたがabstract class代わりのinterfaceを使用しようとすることができ大胆

+0

1行で説明が良い! –

2

documentationからその記述の重要な一部となりました。

public abstract class MyInterface 
{ 
    public abstract ICollection<Translation> FileTypeTranslations { get; set; } 
} 

public class FileType : MyInterface 
{ 
    public override ICollection<Translation> FileTypeTranslations { get; set; } 
} 

public class FileTypeInherited : FileType 
{ 
    public override ICollection<Translation> FileTypeTranslations { get; set; } 
} 
0

メソッド、プロパティ、イベント、インデクサを無効にするために、彼らは仮想でなければなりません:だから授業で、あなたはoverrideFileType宣言でvirtualアクセス修飾子と同じように、再びこの性質、すなわち動作ができ、FileTypeから継承されました。しかし、彼らが仮想であれば、そのオプションを上書きすることは必須ではありません。抽象クラスについて話をすると、抽象クラスのメンバーは暗黙的に仮想になります。そのため、いくつかのサブクラスでoverrideキーワードを定義する際にoverrideキーワードを使用する必要があります。

関連する問題