public override void Write(WritingContext context)
{
var writer = context.Writer;
if (IsFat)
{
writer.WriteUInt32((uint)HandlerType);
writer.WriteUInt32((uint)TryStart.Offset);
writer.WriteUInt32((uint)(TryEnd.Offset - TryStart.Offset));
writer.WriteUInt32((uint)HandlerStart.Offset);
writer.WriteUInt32((uint)(HandlerEnd.Offset - HandlerStart.Offset));
}
else
{
writer.WriteUInt16((ushort)HandlerType);
writer.WriteUInt16((ushort)TryStart.Offset);
writer.WriteByte((byte)(TryEnd.Offset - TryStart.Offset));
writer.WriteUInt16((ushort)HandlerStart.Offset);
writer.WriteByte((byte)(HandlerEnd.Offset - HandlerStart.Offset));
}
switch (HandlerType)
{
case ExceptionHandlerType.Exception:
writer.WriteUInt32(CatchType.MetadataToken.ToUInt32());
break;
case ExceptionHandlerType.Filter:
writer.WriteUInt32((uint)FilterStart.Offset);
break;
default:
writer.WriteUInt32(0);
break;
}
}