我有类似以下查询的内容
_connection.Query<SomeType>(SELECT Id, Type, Time FROM table)
事情是SomeType
是通用类型
public class SomeType<T>
{
public int Id { get; set; }
public SomeTypeType Type { get; set; }
public DateTime Time { get; set; }
public T Object { get; set; }
}
现在我可以定义某种SomeType<object>
或其他什么,为了使用正确的通用SomeType<T>
,我需要重建对象。
我希望能够做的就是拥有一条实际可行的线
var x = _connection.Query<SomeType<object>>("...") as SomeType<OtherType>
(显然这不是一个很好的例子,但在我的情况下它更有意义)
无论如何,这显然会返回null,并且实际上不会起作用。
我想也许可以通过定义一些其他的方法来构造类型,可能会挂钩dapper初始化类型并定义Factory或其他东西的方式。
对我如何实际做到这一点的任何建议?
答案 0 :(得分:1)
我不知道Dapper中使用的类型的任何可配置工厂。
我快速浏览了github上的代码并没有什么明显的,但我没有进行详尽的搜索。
有TypeHandlers,但它们似乎更多地用于映射值类型,即模型对象的属性,而不是修改modelobject本身。
所以我认为你必须以更手动的方式处理这个问题:
sudo gem sources -a http://gemcutter.org
构造函数中从'SomeType'到'SomeType'的手动映射可能会变得乏味,因此您可以使用AutoMapper之类的东西来处理该位。