![](/img/trans.png)
[英]ASP.net How to output cache a webusercontrol on controls public properties
[英]Extending ASP.NET WebControls: How to effectively hide public properties
我將TextBox WebControl擴展為一種“ DateTextBox”,將其值作為隱藏代碼的屬性( DateValue
)公開:
public sealed class DateTextBox : TextBox
{
public DateTime ?DateValue
{
/* ToDateFromUserInterface() and ToUserInterfaceString() are both
extension methods */
get
{
return
(
String.IsNullOrEmpty(Text) ?
new DateTime?() :
Text.ToDateFromUserInterface()
);
}
set
{
if (value != null) Text = ((DateTime)value).ToUserInterfaceString();
}
}
}
鑒於此控件僅應與日期一起使用,因此沒有理由繼承其父級的Text
屬性。
除了實現NotImplementedException
,像這樣:
new public String Text
{
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
只需覆蓋它並提供日期的字符串版本即可。 每當您從基類繼承時,嘗試像這樣更改現有接口通常是個壞主意……這違背了所有面向對象的實踐:-P
您可以使用EditorBrowsable屬性。 它只會對Intelisense隱藏該屬性,而不會破壞與基類的編譯時兼容性。
盡管您仍然可以使用屬性(如果知道名稱)。
PS:請閱讀本文結尾處的用戶評論。 http://msdn.microsoft.com/zh-CN/library/system.componentmodel.editorbrowsableattribute.aspx
如果要創建一個繼承另一個類的類,則父方法的所有屬性都應該仍然相關。 在這種情況下,您可以返回獲取日期的文本表示形式,並解析集合的文本表示形式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.