これについてStackoverflowにも同様の質問がありますが、私の問題には役立ちません。これが私がしていることの全体像です。iDB2DataReaderのILを生成して、データベースからタイプを動的に取得し、pocoにマップしています。データをプルするためにnullableを取得するのに問題があります。
だから私はリフレクションを介して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;
}
コードコメントからわかるように、基になるタイプの日時を取得しますが、これは機能せず、「操作によってランタイムが不安定になる可能性があります」というランタイムエラーが発生します。
本当の問題は、のgetmethodに使用する名前がわからないことですNullable<DateTime>
。または、少なくとも私はそれがそれほど単純であることを望んでいました。どんな助けでもいただければ幸いです。