Ah dynamic code generation is in fact one of the techniques employed in my Binaron.Serializer (https://medium.com/@zach.saw/binaron-serializer-binary-serializer-for-net-core-3-0-and-above-24ad5091eb4) to achieve its speed over other serializers.
Something this article failed to mention is that dynamic code gen can allow you to avoid boxing / unboxing too, as well as ref read/write to backing fields.