Как определить размер типа значения с помощью Mono.Cecil - PullRequest
1 голос
/ 30 ноября 2010

Я ищу способ определения размера в байтах типа значения (TypeReference) в Mono.Cecil.

Мне это нужно для оптимизации генерации кода сравнения равенства Nullable.

  • Если размер типа значения> 4, сначала сравните HasValue, затем сравните значения.
  • Если размер типа значения <= 4, сначала сравните GetValueOrDefault, затем сравните HasValue. </li>

Но для этого мне нужно как-то получить sizeof (T).

1 Ответ

1 голос
/ 04 августа 2011

Это не на 100% идеально (поскольку будет варьироваться в зависимости от 32/64-битной арки), но у Жандарма есть код для выполнения этой задачиПосмотрите на метод SizeOf внутри:

https://raw.github.com/mono/mono-tools/master/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeStructureRule.cs

...