【发布时间】:2010-11-22 03:50:31
【问题描述】:
我目前正在 ASP.NET MVC 中开发一个应用程序,该应用程序有许多查找表,所有表单
LookUp {
Id
Text
}
如您所见,这只是将 Id 映射到文本值。这些用于诸如颜色之类的东西。我现在有很多,目前有 6 个,而且可能很快会更多。
我正在尝试组合一个可通过 AJAX 使用的 API,以允许用户从这些查找表中添加/列出/删除值,因此例如我可以有类似的东西:
http://example.com/Attributes/Colours/[List/Add/Delete]
我目前的问题是,很明显,无论我使用哪个查找表,一切都完全一样。所以真的不应该有任何重复的代码。
我目前有一个指向“AttributeController”的自定义路由,它根据 URL 计算出有问题的属性/查找表(即http://example.com/Attributes/Colours/List 需要“颜色”表)。我将属性(颜色 - 一个字符串)和操作(列表/添加/删除)以及所需的任何其他参数(如果我想将红色添加到列表中,说“红色”)传回我的存储库,其中实际工作已完成。
这里的事情开始变得混乱,因为目前我已经对属性字符串进行了 switch/case,然后可以获取与特定查找表相对应的 Linq-to-Sql 实体。我发现这很脏,因为我发现自己必须在每个查找实体上编写相同的操作,呃!
我真正想做的是进行某种映射,我可以简单地传入属性名称并获取某种形式的通用查找对象,我可以对其执行所需的操作而无需关心输入。
有什么方法可以对我的 Linq-To-Sql 实体执行此操作吗?我试过让它们实现一个基本接口 (IAttribute),它只是指定 Id/Text 属性,但是这样做会失败:
System.Data.Linq.Table<IAttribute> table = GetAttribute("Colours");
因为我无法将System.Data.Linq.Table<Colour> 转换为System.Data.Linq.Table<IAttribute>。
有没有办法让这些查找表“通用”?
抱歉,这有点脑残。这里肯定缺少信息,所以如果您想了解更多详细信息,请告诉我。干杯!
【问题讨论】:
标签: asp.net-mvc linq-to-sql generics