public LocalInfo AddLocalVariable(Type localType, bool isPinned = false) { var localInfo = new LocalInfo(localType, isPinned); localVariables.Add(localInfo); return(localInfo); }
public LocalInfo AddLocalVariable(byte[] signature) { var localInfo = new LocalInfo(signature); localVariables.Add(localInfo); return(localInfo); }
private static byte[] BakeLocal(LocalInfo localInfo) { if (localInfo.LocalType == null) { throw new ArgumentException(); } var sigHelper = SignatureHelper.GetLocalVarSigHelper(); sigHelper.AddArgument(localInfo.LocalType, localInfo.IsPinned); var withHeader = sigHelper.GetSignature(); byte[] result = new byte[withHeader.Length - 1 - 1]; // first byte is 0x7 (LOCAL_SIG) and second is 0x1 (Count) Array.Copy(withHeader, 2, result, 0, result.Length); return(result); }