Create a non-generic interface or base class, which probably includes everything FormField does except the type-specific bits. Then you can have an ICollection. Obviously you won't be able to use this in a strongly-typed way, in terms of the type of field being used - but you can use all the non-type-specific bits of it (e.g. the name and the form).