I’m looking a way to determine size in bytes of a value type (TypeReference) in Mono.Cecil.
I need it to optimize Nullable equality compare code generation.
- If value type size > 4, compare HasValue first, then compare values.
- If value type size <= 4, compare GetValueOrDefault first, then compare HasValue.
But to do so, I need to get somehow sizeof(T).
It’s not 100% perfect (since since will vary based on 32/64 bits arch) but Gendarme has the code to do this task. Look at the SizeOf method inside:
https://raw.github.com/mono/mono-tools/master/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeStructureRule.cs