Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET FormView详细信息视图和多态性_Asp.net_.net_Detailsview_Formview - Fatal编程技术网

ASP.NET FormView详细信息视图和多态性

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属性 插入法 更新项方法 我惊讶地发现,

我正在编写一个ASP.NET母版页,它为主/详细信息编辑(ValidationSummary、错误处理、使用jQueryUI对话框弹出详细信息视图)执行常见的grunt工作。它有两个用于主视图和详图视图的
ContentPlaceHolder
控件,主占位符应包含
GridView
,详图占位符应包含
DetailsView
FormView

母版页只需访问DetailsView或FormView的几个基本成员:

  • 转换模式法
  • 数据绑定方法
  • CurrentMode属性
  • 插入法
  • 更新项方法
我惊讶地发现,虽然DetailsView和FormView都有这些相同的成员,但它们不是从公共基类或接口继承的(DataBind除外)。甚至有两个等价的枚举
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)不是从公共基类或接口继承的。我不相信微软的工程师们会“阻止多态性的使用”。也许当您尝试创建包装器案例时,您会发现他们决定不继承每个函数/枚举的原因。