我有一个带抽象方法的abstruct类,方法param是通用的。
这是param类型声明:
public class StepHandlerWrapper<T> where T : BaseStepDataModel{...}
这是父摘要:
这实际上是问题,我希望StepHandlerWrapper泛型类型在每个实现上都是动态的:
public abstract class BaseStepHandler{
protected abstract HandlerResult Handle(StepHandlerWrapper<???????????????> );
}
这些是2个实现注意每个实现的类型(不同):
public class LoginHandler : BaseStepHandler {
protected override HandlerResult Handle(StepHandlerWrapper<LoginStepOneDataModel> wrapper){...}
}
public class RegularDemoAccountHandler : BaseStepHandler{
protected override HandlerResult Handle(StepHandlerWrapper<RegularDemoAccountStepOneDataModel> wrapper){...}
}
如何使抽象方法的每个实现都不同?
答案 0 :(得分:3)
您还需要BaseStepHandler
通用:
public abstract class BaseStepHandler<T> where T : BaseStepDataModel {
protected abstract HandlerResult Handle(StepHandlerWrapper<T> wrapper);
}
public class LoginHandler : BaseStepHandler<LoginStepOneDataModel> {
protected override HandlerResult Handle(StepHandlerWrapper<LoginStepOneDataModel> wrapper) {...}
}
答案 1 :(得分:0)
这两个实现都是DataModel,所以为什么不把它作为两个实现派生自的抽象类:
abstract DataModel {
}
class LoginStepOneDataModel : DataModel {
}
class RegularDemoAccountStepOneDataModel : DataModel {
}
public abstract class BaseStepHandler{
protected abstract HandlerResult Handle(StepHandlerWrapper<DataModel>);
}