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

时间:2014-05-22 15:50:12

标签: c# asp.net-mvc inheritance

我正在做这些MVC控制器,我想重用这些动作(创建,编辑,删除等)

到目前为止,我的模型可以实现某些只具有属性的接口。 例如:如果我的模型Cat继承自ISingleKeyIndexable,则表示Cat将具有属性Id,然后可以使用该属性进行数据库查询。

到目前为止,我做过类似的事情:

public class CatController : SingleKeyIndexableController<Cat>

SingleKeyIndexableController包含“创建”,“编辑”和“删除”等操作。它们都依赖于作为泛型实现的类型ISingleKeyIndexable

当你想拥有不同风格的控制器基类时,就会出现问题。因此,假设某些控制器处理ISingleKeyIndexable的模型,其他控制器为IStringIndexable,而其他控制器不是IDeleteable(因此您不会执行删除操作)。你必须为这些接口的每个不同组合定义一个类,这是不好的。

有没有办法继续&#34;继承&#34; (不一定是真正的继承)来自其他地方的一些方法取决于我给出的模型类型实现的接口作为其他类的泛型,或者其他一些方法来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

一般来说,这是一种不鼓励的模式(仅导出类的某些方面),并且MVC不支持它。

但是,您可以通过覆盖它们并使用[NonAction]标记它们来阻止您不希望客户端使用的操作