0
public interface IRecordInformation
    {
         DateTime CreatedOn { get; set; }
         DateTime ModifiedOn { get; set; }

    }
public class CareerApplication : IRecordInformation
    {
        public int CareerApplicationId { get; set; }
        public string Name { get; set; }
        public string FileName { get; set; }
        public string Email { get; set; }
        public DateTime IRecordInformation.CreatedOn { get; set; }
        public  DateTime IRecordInformation.ModifiedOn { get; set; }
    }

なぜ私はこれをやっているのですか?インターフェイスを変更してプロパティを削除すると、クラスに実装が存在するインターフェイスで宣言されたプロパティがないというコンパイル時エラーが発生するはずです。このようにして、クラスから実装を削除できます。しかし、クラスでインターフェイス名を使用して明示的な実装を使用しない場合、インターフェイスからプロパティを削除すると、その対応するプロパティはクラス自体のプロパティとして扱われます。

私は次のようにしてみました

public DateTime CreatedOn { get => ((IRecordInformation)this).CreatedOn; set => ((IRecordInformation)this).CreatedOn = value; }

しかし、画像を添付しているスタックオーバーフロー例外があります

私が直面しているエラー

4

1 に答える 1

0

@Gert Arnoldの提案どおりに機能します

public DateTime CreatedOn { get => ((IRecordInformation)this).CreatedOn; set => ((IRecordInformation)this).CreatedOn = value; }
        public DateTime ModifiedOn
        {
            get
            {
                return ((IRecordInformation)this).ModifiedOn;
            }
            set
            {
                ((IRecordInformation)this).ModifiedOn = value;
            }

        }
        DateTime IRecordInformation.CreatedOn { get; set; }
        DateTime IRecordInformation.ModifiedOn { get; set; }

        public bool IsPublished
        {
            get
            {
                return ((IPublishInformation)this).IsPublished;
            }
            set
            {
                ((IPublishInformation)this).IsPublished = value;
            }

        }
        bool IPublishInformation.IsPublished { get; set; }

私のブログでは、私のプロジェクトで直面していた完全な問題を見つけることができますhttp://blogs.anujchauhan.com/post/2020/05/01/Implicit-to-Explicit-implementations-of-interface-in-class- for-Entity-Framework-Core-Common-Columns-in-table-like-CreatedOn-UpdatedOn-DeletedOn-IsPublished

于 2020-05-01T06:33:55.390 に答える