假設我有一些內容類,如Page,TabGroup,Tab等。 其中某些將實現我的IWidgetContainer接口 - 這意味着它們將從接口獲取名爲ContainedItems的附加字段以及用於操作此字段的一些方法。如何在運行時檢查某個類是否實現了某個接口?
現在我需要反映的一些類實現由我的ASP.NET MVC觀呈現出一些特殊的自定義控件這個接口(如jQuery添加/刪除/移動/重新排序按鈕)的事實。
例如,TabGroup將實現IWidgetContainer,因爲它將包含選項卡,但選項卡不會實現它,因爲它無法包含任何內容。
所以我必須以某種方式檢查我的視圖,當我呈現我的內容對象(問題是,我在我的視圖中使用我的基類作爲強類型而不是具體類),它是否實現了IWidgetContainer。
怎麼可能或已經我就徹底錯過了什麼?
要改寫這個問題,您如何在UI中反映一些類的特殊屬性(如接口實現)(不一定是ASP.NET MVC)?
這裏是我到目前爲止的代碼:
[DataContract]
public class ContentClass
{
[DataMember]
public string Slug;
[DataMember]
public string Title;
[DataMember]
protected ContentType Type;
}
[DataContract]
public class Group : ContentClass, IWidgetContainer
{
public Group()
{
Type = ContentType.TabGroup;
}
public ContentList ContainedItems
{
get; set;
}
public void AddContent(ContentListItem toAdd)
{
throw new NotImplementedException();
}
public void RemoveContent(ContentListItem toRemove)
{
throw new NotImplementedException();
}
}
[DataContract]
public class GroupElement : ContentClass
{
public GroupElement()
{
Type = ContentType.Tab;
}
}
接口:
號,用 「是」 沒有問題的。我忘了也可以使用「is」。 ;) – mare 2010-04-19 10:30:06