This doesn't work with structs. Also, searching for NonPublic methods is not needed, as the interface method has to be public.

I think the correct code is:
```
				MethodInfo miOnDeserialization = typeof(IDeserializationCallback).GetMethod("OnDeserialization",
										BindingFlags.Instance | BindingFlags.Public,
										null, new[] { typeof(Object) }, null);

				il.Emit(OpCodes.Ldarg_1);
				il.Emit(OpCodes.Ldnull);
				il.Emit(OpCodes.Constrained, type);
				il.Emit(OpCodes.Callvirt, miOnDeserialization);
```

Can you try it out if it works correctly with your use case?