Skip to content

Instantly share code, notes, and snippets.

@hexagit
Last active February 20, 2019 09:36
Show Gist options
  • Save hexagit/5ca901e8ec962753b5fa9718e87c67af to your computer and use it in GitHub Desktop.
Save hexagit/5ca901e8ec962753b5fa9718e87c67af to your computer and use it in GitHub Desktop.
Arrayインスタンス取得
// OpCodeがldtokenの段階で初期化子を解決できるのでそこで行います。
var operand = method.Module.ResolveMember(metadataToken, typeArguments, methodArguments);
var field = (FieldInfo)operand;
var byteSize = Marshal.SizeOf(field.FieldType);
var typeSize = ResolvePrimitiveTypeSize(newarrType); // Primitiveな型のサイズを取得する
var elementCount = byteSize / typeSize;
var array = Array.CreateInstance(newarrType, elementCount);
RuntimeHelpers.InitializeArray(array, field.FieldHandle);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment