使用下面的示例代码作为上下文...当我运行此查询时,我将'Id'字段作为默认值返回(对于int为0).我想告诉dapper以一种方式运行,如果结果集中有一列没有映射到我的结果对象上的属性,它将抛出异常.(我知道问题只是我需要在SQL查询中删除额外的'd',但我有兴趣让它更明确地暴露自己)
我一直无法找到关于这个主题的任何内容.如果Dapper可以做到这一点,请告诉我.
提前谢谢(除了这个问题,对于没有采取过任何措施的人来说,Dapper真的是切片面包以来最棒的东西!).
class CustomerRecord
{
public int Id { get; set; }
public string Name { get; set; }
}
CustomerRecord[] GetCustomerRecords()
{
CustomerRecord[] ret;
var sql = @"SELECT
CustomerRecordId AS Idd,
CustomerName as Name
FROM CustomerRecord";
using (var connection = new SqlConnection(this.connectionString))
{
ret = connection.Query<CustomerRecord>(sql).ToArray();
}
return ret;
}
Run Code Online (Sandbox Code Playgroud) 我有一些反射代码,我希望有一种方法将方法名称绑定到类型而不是通过字符串声明.
我有这个界面:
interface IDoStuff<T> {
void Do(T stuff);
}
Run Code Online (Sandbox Code Playgroud)
然后我有这个代码:
object stuff = GotThisFromSomewhereElse();
object doer = GotThisFromSomewhereElseAlso();
var doMethodInfo = doer.GetType().GetMethod("Do");
doMethodInfo.Invoke(doer, new[] { stuff });
Run Code Online (Sandbox Code Playgroud)
问题是我不能简单地进行安全演员并调用它,因为它是通用的,我实际上并不知道T是什么类型.
这工作正常,但是当我重命名方法时,我必须更新它,我并不过分担心,因为我有测试来确认所有这些工作,以防止不知道它改变.
它真的很丑陋,我很好奇是否有一些光滑的方式来进行这种打字,因此如果我改变它将由ReSharper重命名.
我真的很喜欢这样的东西:
object stuff = GotThisFromSomewhereElse();
object doer = GotThisFromSomewhereElseAlso();
var doMethodInfo = doer.GetType().Methods.Do;
doMethodInfo.Invoke(doer, new[] { stuff });
Run Code Online (Sandbox Code Playgroud)
在此先感谢,如果这是C#中可能的事情,请告诉我.