【发布时间】:2012-02-12 14:35:17
【问题描述】:
我正在编写一个 ASP.NET 母版页,它为主/详细信息编辑(ValidationSummary、错误处理、使用 jQuery-ui 对话框弹出详细视图)执行常见的繁重工作。它有两个用于主视图和详细视图的ContentPlaceHolder 控件,主占位符应包含GridView,详细占位符为DetailsView 或FormView。
母版页只需要访问DetailsView或FormView的几个基本成员:
- ChangeMode 方法
- 数据绑定方法
- CurrentMode 属性
- InsertItem 方法
- UpdateItem 方法
我很惊讶地发现,虽然 DetailsView 和 FormView 都具有这些相同的成员,但它们不是(DataBind 除外)继承自公共基类或接口。甚至还有两个等效的枚举 FormViewMode 和 DetailsViewMode,因此 ChangeMode 和 CurrentMode 成员甚至没有相同的签名。
我打算通过创建一个包装类来解决这个问题,但是任何人都可以解释为什么它们是这样实现的吗?我是否通过尝试以多态方式使用它们来积蓄麻烦?
我很难相信这不是微软工程师故意的,所以我只能得出结论,他们打算阻止多态的使用。
【问题讨论】:
标签: asp.net .net detailsview formview