Collection of generic types
c#, collections, generics, interface
Solution
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<IFormField>`. 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).
Problem
I have an object (form) which contains a collection (.Fields) which I want to contain instances of a generic class (FormField). The FormField, simply, is defined as such: ``` public class FormField<T> { private Form Form; public T Value { get; set; } public string Name { get; set; } public void Process() { // do something } public FormField(Form form, string name, T value) { this.Name = name; this.Value = value; this.Form = form; } } ``` This allows me to have FormField, FormField etc. and that part works great. What I want is a collection of "Formfields" regardless of the type, but I am forced into defining a type (it seems) such as: ``` public class Form { string Code { get; set; } string Title { get; set; } int Year { get; set; } Guid ClientID { get; set; } ICollection<FormField<int>> Fields { get; set; } } ``` What, I think, I want is an interface that allows me to abstract the type information and thus type the collection as instances of (for exxample) IFormField not FormField<> But I can't see how to define this without strongly typing the collection in the interface... Any help (including any alternative solutions!) would be greatly appreciated! Thanks, Ben