C# 继承基类并更改属性名称

C# 继承基类并更改属性名称,c#,C#,考虑书桌结构: BookId、IsEbook、ISBN、PubDate、电子书格式 一本书可以是硬拷贝,也可以是基于IsEbook列值的电子书 方法的输出将有两个集合,一个用于书籍,另一个用于电子书 书 书呆子 ISBN 出版日期 电子书 电子书 ISBN 出版日期 电子书格式 BookId和EBookId是从BookId列获取其值的不同属性 我是否创建了两个类,一个用于Book,另一个用于Ebook,或者我是否可以以某种方式使用继承,因为BookId和EBookId在表中是相同的,

考虑书桌结构:

BookId、IsEbook、ISBN、PubDate、电子书格式

一本书可以是硬拷贝,也可以是基于IsEbook列值的电子书

方法的输出将有两个集合,一个用于书籍,另一个用于电子书

    • 书呆子
    • ISBN
    • 出版日期
  • 电子书
    • 电子书
    • ISBN
    • 出版日期
    • 电子书格式
BookId和EBookId是从BookId列获取其值的不同属性

我是否创建了两个类,一个用于Book,另一个用于Ebook,或者我是否可以以某种方式使用继承,因为BookId和EBookId在表中是相同的,在输出中具有不同的名称


提前谢谢。

我会创建两个类,Book和EBook,但您可以将BookId、ISBN和PubDate放在一个界面中,例如
IBook
。通过这种方式,您可以编写适用于两者的逻辑,而不必具有相同的属性名称。

只有公共/共享实体才能在基类中组合在一起

如果一个属性有不同的名称,那么它不是共享的,所以不应该在公共基类中,即使它非常非常相似。因此,在本例中,您只有ISBN和PubDate的共同点

您可以使基类抽象,这样它就不能自己实例化

但您也可以使用不同的方法,在接口中指定通用性,并使您的book&EBook类使用此方法而不是基类。像这样:

    public interface IBook
    {
        DateTime PubDate { get; set; }
        string ISDN { get; set; }
    }

    public class Book: IBook
    {
        public DateTime PubDate { get ; set ; }   //Comes from IBook
        public string ISDN { get ; set ; }  //Comes from IBook

        public int BookId { get; set; }
    }

    public class EBook : IBook
    {
        public DateTime PubDate { get; set; }   //Comes from IBook
        public string ISDN { get; set; }  //Comes from IBook

        public int EBookId { get; set; }
        public string EbookFormat { get; set; }
    }

我认为你把事情复杂化了。书就是书。无论是电子书、精装书、平装书。。。是那本书的财产。哪个iSBN?有两个标准;)