To use the object initializer, you must specify which properties you want to set:
attachments.Add(new ProposalFileInfo { FileId = 1, IsSupportDocument = false });
So, transforming all your initialization into a collection initializer, we get:
var attachments = new List<ProposalFileInfo> { new ProposalFileInfo { FileId = 1, IsSupportDocument = false }, new ProposalFileInfo { FileId = 2, IsSupportDocument = false }, new ProposalFileInfo { FileId = 3, IsSupportDocument = false }, };
However, you can make your code simpler by simply adding a constructor to ProposalFileInfo :
public ProposalFileInfo(int fileId, bool isSupportDocument) { FileId = fileId; IsSupportDocument = isSupportDocument; }
Then your initialization can only be:
var attachments = new List<ProposalFileInfo> { new ProposalFileInfo(1, false), new ProposalFileInfo(2, false), new ProposalFileInfo(3, false) };
If you feel you want to indicate what each argument means (or some of them) and you use C # 4, you can use named arguments, for example.
new ProposalFileInfo(1, isSupportDocument: false),