[英]How to inherit only certain methods depending on generic types
我正在做这些MVC控制器,我想重用这些操作(创建,编辑,删除等)
到目前为止,我的模型可以实现仅具有属性的某些接口。 例如:如果我的Model Cat
继承自ISingleKeyIndexable
,则意味着Cat
将具有Id
属性,然后可以使用该属性执行数据库查询。
到目前为止,我已经做了类似的事情:
public class CatController : SingleKeyIndexableController<Cat>
SingleKeyIndexableController
具有创建,编辑和删除之类的操作。 它们都取决于以下事实:作为通用类型提供的类型实现ISingleKeyIndexable
。
当您想拥有不同类型的控制器基类时,就会出现问题。 因此,假设某些控制器处理的模型为ISingleKeyIndexable
,其他的IStringIndexable
,其他的则不可IDeleteable
(因此您没有Delete动作)。 您将不得不为这些接口的每种不同组合定义一个类,这是不好的。
是否有任何方法可以从其他地方“继承”(不一定是真正的继承)某些方法,具体取决于我提供给其他类的通用模型类型所实现的接口,或采用其他方法进行处理?
通常,这是不鼓励使用的模式(仅派生类的某些方面),MVC不支持此模式。
但是,您可以通过覆盖并用[NonAction]标记它们来阻止客户端不希望使用的操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.