2012-12-03 75 views
1

我有幾個事件:電影,表演,體育賽事等。 Initialy我想爲事件類型創建基類(Event)和單獨的類:Film class,Sport class ....
但是,許多類是空的,因爲它們沒有特定的字段。因此,我決定創建一個類Event和單獨的類EventType。並創建一個類中的所有所有事件的所有字段:動態類型和視圖

public class Event 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Duration { get; set; } 
    public string DirectorList { get; set; } 
    public string ActorList { get; set; } 
    public string Genre { get; set; } 

    public EventType Type {get; set;} 
    ... 
} 

public class EventType 
{ 
    public string Name {get; set;} 
} 

但某些類型的事件可能沒有某些字段。例如,體育賽事沒有ActorListDirectorList。我決定在控制器的操作中確定事件的類型並顯示相應的視圖。假設我們有七個事件類型和七個視圖。在CMS中,用戶希望添加新的事件類型,但此事件類型的視圖不是由我創建的。

如何讓用戶創建新的事件類型併爲此類型生成視圖?

PS。你怎麼看待我的數據庫設計?
非常感謝我的英語。

+0

爲什麼你的基本事件類型中有DirectorList和ActorList? – Mataniko

+0

因爲我把所有的字段放在一個類「Event」中。通過這種方式,我不必創建其他課程(電影,體育...) – user1260827

+0

這是什麼問題?這正是它應該如何完成的OOP – Mataniko

回答

0

你應該在這裏用繼承定義,只有基本屬性一類的事件:

public class Event 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

然後創建另一個類:

public class FilmEvent : Event 
{ 
    public string ActorList { get; set; } 
    public string DirectorList { get; set; } 
} 

類型可以從類本身現在推斷。

+0

最初我用這種方式。但是,我得到空課。例如,Sport。它沒有特定的文件,它將是空的。 – user1260827

+0

這是一個怎樣的問題?它只是讓您的體育課程在未來可以擴展。 – Mataniko

+0

這種方式不靈活。例如,客戶想要添加新的事件類型。在這種情況下,我必須創建新的類和視圖,然後在服務器上部署。新的方式(沒有單獨的類)允許客戶創建新的事件類型,而無需我。 – user1260827