// Remove this function when https://github.com/dotnet/roslyn/issues/25185 is fixed private static void WriteByteToBlobBuilder(BlobBuilder blobBuilder, int offset, byte data) { BlobBuilder.Blobs blobs = blobBuilder.GetBlobs(); int startOffsetOfBlob = 0; foreach (Blob b in blobs) { ArraySegment <byte> bytesInBlob = b.GetBytes(); int offsetInBlob = offset - startOffsetOfBlob; if (offsetInBlob < bytesInBlob.Count) { ((IList <Byte>)bytesInBlob)[offsetInBlob] = data; return; } startOffsetOfBlob += bytesInBlob.Count; } }
// Remove this function when https://github.com/dotnet/roslyn/issues/25185 is fixed private static byte ReadByteFromBlobBuilder(BlobBuilder blobBuilder, int offset) { BlobBuilder.Blobs blobs = blobBuilder.GetBlobs(); int startOffsetOfBlob = 0; foreach (Blob b in blobs) { ArraySegment <byte> bytesInBlob = b.GetBytes(); int offsetInBlob = offset - startOffsetOfBlob; if (offsetInBlob < bytesInBlob.Count) { return(((IList <Byte>)bytesInBlob)[offsetInBlob]); } startOffsetOfBlob += bytesInBlob.Count; } throw new IndexOutOfRangeException(); }