41 Sınıf türetme, Class inheritance

Bu yazımızda daha önce oluşturduğumuz Duyuru ve Etkinlik sınıflarının daha yapısal bir yapıda olmasını sağlayacağız. Duyuru ve Etkinlik sınıflarının her ikisinde de Id ve Baslik alanları mevcut.

Ortak olan alanları başka bir sınıf olarak tanımladıktan sonra , bu elemanlara sahip sınıfları bu ortak sınıf üzerine inşa ediyoruz.

Temel.cs
Id ve Detay alanlarına sahip Temel adında bir Class oluşturuyoruz.

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

public class Temel
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    [DataType(DataType.MultilineText)]
    public string Detay { get; set; }

}

Duyuru.cs
Duyuru sınıfını Temel sınıfı üzerine inşa ediyoruz. Böylece Duyuru sınıfı Temel sınıfının alanlarına da sahip olacak.

using System.ComponentModel.DataAnnotations;
public class Duyuru : Temel
{
    [Required]
    public string Baslik { get; set; }
    [Required]
    [Display(Name = "Kısa Bilgi")]
    public string KisaBilgi { get; set; }

    [Required]
    public DateTime YayinBaslamaTarihi { get; set; }

    [Required]
    public DateTime EklenmeTarihi { get; set; }
    public Duyuru()
    {
        this.EklenmeTarihi = DateTime.Now;
        this.YayinBaslamaTarihi = DateTime.Now;
    }

}

Etkinlik.cs
Etkinlik sınıfını Temel sınıfı üzerine inşa ediyoruz. Böylece Etkinlik sınıfı Temel sınıfının alanlarına da sahip olacak.

using System.ComponentModel.DataAnnotations;
public class Etkinlik : Temel
{
    [Required]
    public string EtkinlikAd { get; set; }
    [Required]
    [DataType(DataType.DateTime)]
    public DateTime TarihSaat { get; set; }
    [Required]
    public string Yer { get; set; }

    [Required]
    [DataType(DataType.ImageUrl)]
    public string Gorsel { get; set; }
    public Etkinlik()
    {
        this.TarihSaat = DateTime.Now; ;
    }

}