0
.Net 3.5プロジェクトを.Net 4.5にアップグレードしようとしていますが、すべて動作していますが、1つのDynamicMethodが '動的メソッドOpCodes.Stfldが原因で '操作でランタイムが不安定になる可能性があります'
public static FieldSetter<TField> CreateSetFieldDelegate<TField>(FieldInfo fieldInfo)
{
var dynamicMethod = new DynamicMethod(
"setfast_" + fieldInfo.Name,
null,
new[] { typeof(object), typeof(TField) },
fieldInfo.DeclaringType);
var ilGenerator = dynamicMethod.GetILGenerator();
ilGenerator.Emit(OpCodes.Ldarg_0);
ilGenerator.Emit(OpCodes.Ldarg_1);
ilGenerator.Emit(OpCodes.Stfld, fieldInfo);
ilGenerator.Emit(OpCodes.Ret);
return (FieldSetter<TField>)dynamicMethod.CreateDelegate(typeof(FieldSetter<TField>));
}
呼び出しコード
var fieldSetter = Reflection.CreateSetFieldDelegate<Guid>(_fieldInfo);
return (dataProviderAdapter, target, values, index)
=> fieldSetter(target, dataProviderAdapter.GetGuid(values, index));
dataProviderAdapter.GetGuid(値、指数)は予想通り可能System.Guidを返すが、呼び出しfieldSetterは例外 'オペレーションは、ランタイムを不安定可能性が' せます。
私はILの経験がありませんので、どこでデバッグを開始するのかは本当に分かりません。 PEVerifyはエラーを返しません。どんな助けでも大歓迎です。