2016-01-21 169 views
1

我對這一切有點新鮮。所以請耐心等待。c#MVC - 繼承和接口

我有一個名爲CrmObject的類,它被其他一些類如Contact所繼承。 現在我想編寫一個接口用於CrmObject的所有子類。我需要Unity.MVC存儲庫。現在我爲每個孩子班都有一個界面,但是應該有更好的方式來做到這一點,這就是爲什麼我在這裏。我很樂意爲此提供鏈接和示例。

波蘇斯:

public class CrmObject 
{ 
    [Key] 
    [Column(Order = 0)] 
    public int Id { get; set; } 
    public bool IsProcessed { get; set; } 
    public string Error { get; set; } 
    public long PartnerOID { get; set; } 
    public OrdnungsbegriffeTypeType OrdnungsbegriffTyp { get; set; } 
    [Required] 
    public string OrdnungsbegriffTypString { get; set; } 
    public string OrdnungsbegriffWert { get; set; } 
    public CrmJob Job { get; set; } 
    [ForeignKey("Job")] 
    [Column(Order = 1)] 
    public int JobId { get; set; } 
} 

[Table("Contacts")] 
    public class Contact: CrmObject 
    { 
     public DateTime KontaktAm { get; set; } 
     public string ErstelltVon { get; set; } 
     public DateTime ErstelltAm { get; set; } 
     public string Vorlage { get; set; } 
} 

[Table("Tasks")] 
    public class Task: CrmObject 
    { 
     public long AufgabeOID { get; set; } 
     public string ExterneId { get; set; } 
     public string Aufgabendefinitionsname { get; set; } 
} 

接口:

public interface ICrmObjectRepository 
{ 
    void Add(CrmObject o); 
    void AddRange(IEnumerable<CrmObject> o); 
    void Remove(int crmObjectId); 
    IEnumerable<CrmObject> GetObjectsByJobId(int crmJobId); 
    CrmObject FindById(int crmObjectId); 
} 

我最好例如像,不僅使用CrmObject型作爲參數添加的功能,但CrmObject的孩子,太。

也許我錯了,我想這樣做的方式是愚蠢的,不可能的或兩者兼而有之。我真的很喜歡有更多經驗的人給我提示如何做到最好。如果有任何額外的信息需要請求。

在此先感謝

回答

0

您可以繼承接口這樣的:

public interface IChildCrmObject : ITask, IContact, ICrmObject 
{ 
    .... 
}