// Helper function to create a BamlRecord from a BamlRecordType private BamlRecord AllocateWriteRecord(BamlRecordType recordType) { BamlRecord record; switch (recordType) { case BamlRecordType.PropertyCustom: record = new BamlPropertyCustomWriteInfoRecord(); break; default: record = AllocateRecord(recordType); break; } return record; }
internal BamlRecord CloneRecord(BamlRecord record) { BamlRecord newRecord; switch (record.RecordType) { case BamlRecordType.ElementStart: if (record is BamlNamedElementStartRecord) { newRecord= new BamlNamedElementStartRecord(); } else { newRecord = new BamlElementStartRecord(); } break; case BamlRecordType.PropertyCustom: if (record is BamlPropertyCustomWriteInfoRecord) { newRecord = new BamlPropertyCustomWriteInfoRecord(); } else { newRecord = new BamlPropertyCustomRecord(); } break; default: newRecord = AllocateRecord(record.RecordType); break; } record.Copy(newRecord); return newRecord; }