【发布时间】:2011-04-17 20:08:42
【问题描述】:
我有一个包含方法void DoCommand(); 的接口。现在我将强制所有子类继承基类方法DoCommand()。但我需要每个类为此方法定义不同的参数,以便为页面提供正确的参数。
我该怎么做? 有没有可能!
N.B:我正在构建一个 ASP.NET Web 应用程序,并且将实现该方法的页面已经从页面基类继承,所以我认为接口是我唯一的选择。因为类的继承中只允许一个基类。
编辑
我希望说明我需要这个可以帮助我提出更好的设计并坚持 OOP 等丰富的概念。
我有 19 个页面,每个页面都需要一个方法来从这个页面的输入控件中收集数据并将其放入一个对象中(19 个页面.. 19 种对象)
所以我需要 Collect();被强制,那么每个页面都会将正确类型的对象作为参数.. 是否更有意义?
顺便说一句,如果您认为我的设计完全错误,欢迎使用全新的设计模式(Y)
【问题讨论】:
-
参数不同是什么意思?您可能可以在您的界面中执行类似 void DoCommand(object obj) 的操作,然后将其限制在继承它的类中。我相信只要您的参数类型是一种对象类型,您就可以使用
-
为什么需要这样做?如果你不知道它有哪些参数,你打算怎么调用它?
-
@Prescott .. 例如,基类中的方法是 DoCommand。但是子类 [1] 将实现它 DoCommand(MyItem item) 并且子类 [2] 将它实现为 DoCommand(Price price) .. 嗯,我会尝试 Object 的事情!
-
@Lasse .. 除非我实现它,否则我无法调用该方法,因此我将在给定的子类中实现它并定义适当的参数。
-
只要类中的一个函数或者你继承自implents DoCommand()的任何一个类,所有的类都可以继承该接口。