我有一个这样的方法:
private Contact GetContactFromDbReaderWithSingleResult(DbDataReader dbReader)
{
if (dbReader.HasRows)
{
return new DataReaderReflection().DataReaderToEntity<Contact>(dbReader)[0];
}
return null;
}
然后我可以有一个非常相似的方法:
private Email GetEmailFromDbReaderWithSingleResult(DbDataReader dbReader)
{
if (dbReader.HasRows)
{
return new DataReaderReflection().DataReaderToEntity<Email>(dbReader)[0];
}
return null;
}
DataReaderToEntity-Method的签名是:
public List<T> DataReaderToEntity<T>(IDataReader dr) where T : new()
现在我想创建一个通用变体GetGenericEntityFromDbReaderWithSingleResullt
。
我的方法看起来像这样,但这不正确:
private object? GetEntityFromDbReaderWithSingleResult<T>(DbDataReader dbReader)
{
if (dbReader.HasRows)
{
return new DataReaderReflection().DataReaderToEntity<typeof(T)>(dbReader)[0];
}
return null;
}
虽然仍在学习处理仿制药...... 我做错了什么?
提前感谢!
答案 0 :(得分:4)
将您的返回类型更改为T而不是对象,并删除typeof:
private T GetEntityFromDbReaderWithSingleResult<T>(DbDataReader dbReader) where T : new()
{
if (dbReader.HasRows)
{
return new DataReaderReflection().DataReaderToEntity<T>(dbReader)[0];
}
return default(T);
}