ASP.NET FormView详细信息视图和多态性
我正在编写一个ASP.NET母版页,它为主/详细信息编辑(ValidationSummary、错误处理、使用jQueryUI对话框弹出详细信息视图)执行常见的grunt工作。它有两个用于主视图和详图视图的ASP.NET FormView详细信息视图和多态性,asp.net,.net,detailsview,formview,Asp.net,.net,Detailsview,Formview,我正在编写一个ASP.NET母版页,它为主/详细信息编辑(ValidationSummary、错误处理、使用jQueryUI对话框弹出详细信息视图)执行常见的grunt工作。它有两个用于主视图和详图视图的ContentPlaceHolder控件,主占位符应包含GridView,详图占位符应包含DetailsView或FormView 母版页只需访问DetailsView或FormView的几个基本成员: 转换模式法 数据绑定方法 CurrentMode属性 插入法 更新项方法 我惊讶地发现,
ContentPlaceHolder
控件,主占位符应包含GridView
,详图占位符应包含DetailsView
或FormView
母版页只需访问DetailsView或FormView的几个基本成员:
- 转换模式法
- 数据绑定方法
- CurrentMode属性
- 插入法
- 更新项方法
FormViewMode
和DetailsViewMode
,因此ChangeMode和CurrentMode成员甚至没有相同的签名
我打算通过创建一个包装器类来解决这个问题,但是有人能解释为什么它们是这样实现的吗?我是不是因为尝试多态性地使用它们而积累了麻烦
我发现很难相信这不是微软的工程师们故意的,所以我只能得出结论,他们打算阻止多态性的使用
虽然DetailsView和FormView都有相同的成员,但它们是
不是从公共基类或接口继承的
是的,它们是:
详细视图:CompositeDataBoundControl、IDataItemContainer、InAdminContainer、ICallbackContainer、ICallbackEventHandler、IPostBackEventHandler、IPostBackContainer、IDataBoundItemControl、IDataBoundControl、IFieldControl
FormView:CompositedAboundControl、IDataItemContainer、INamingContainer、IPostBackEventHandler、IPostBackContainer、IDataBoundItemControl、IDataBoundControl、IRenderOuterTableControl我的意思是我列出的成员(当然除了DataBind)不是从公共基类或接口继承的。我不相信微软的工程师们会“阻止多态性的使用”。也许当您尝试创建包装器案例时,您会发现他们决定不继承每个函数/枚举的原因。