繁体   English   中英

如何根据泛型类型仅继承某些方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM