虽然 Stackoverflow 中有类似的问题,但它对我的问题没有帮助。这是我正在做的事情的总体情况。我正在为我的 iDB2DataReader 生成 IL,以从数据库中动态获取我的类型并映射到我的 poco。我在获取可空值以提取数据时遇到问题。
所以我有一个方法需要通过反射返回methodinfo。为了得到这个,我正在使用我需要的类型的“getmethod”。这是代码:
private static MethodInfo GetDataMethod(Type destinationDataType, Type underlyingDestinationDataType, iDB2DataReader reader)
{
MethodInfo methInfo = null;
if (_readerDataMethods.ContainsKey(destinationDataType))
{
methInfo = _readerDataMethods[destinationDataType];
}
else
{
if (underlyingDestinationDataType != null)
{
//trying to get underlying type which would be DateTime thus resulting in GetDatetime.
methInfo = reader.GetType().GetMethod("Get" + underlyingDestinationDataType.Name);
}
else
methInfo = reader.GetType().GetMethod("Get" + destinationDataType.Name);
//methInfo = reader.GetType().GetMethod("Get" + destinationDataType.ToGenericTypeString());
if (methInfo != null)
{
_readerDataMethods[destinationDataType] = methInfo;
}
}
return methInfo;
}
正如您从我的代码注释中看到的那样,我得到了 datetime 的基础类型,但这不起作用,它得到一个运行时错误“操作可能使运行时不稳定。”。
真正的问题是我不知道我应该为 a 的 getmethod 使用什么名称Nullable<DateTime>
。或者至少我希望它是那么简单。任何帮助,将不胜感激。