Mark,
Agreed, yeah it is kinda awkward.
The problem is that the CMS.File is represented by content_file table in SQL and this table doesn't have the attachment size, binary and other columns, all this data is in the CMS_attachment table. When you run your repeater for CMS.File type it means you are accessing content_file table. Ideally you would need JOIN between the two:
select attachmentsize, * from CMS_attachment join content_file on FileAttachment = attachmentguid
One way to solve this awkwardness is to use a repeater with a query or you can use Attachments, for example to show attachments of your current document you can do with a simple macro:
{% foreach (attachment in CurrentDocument.AllAttachments) {
"<a href='/getattachment/" + attachment.AttachmentGUID + "'>" + attachment.AttachmentName + "</a> (" +
Round(attachment.AttachmentSize/1024,0) + "KB)<hr />";
} |(identity)GlobalAdministrator%}