Currently I am trying to extract a collection of dynamically created controls (checkboxes and dropdownlists) from a recursive control collection (repeater). This is the code I am using.
private void GetControlList<T>(ControlCollection controlCollection, ref List<T> resultCollection)
{
foreach (Control control in controlCollection)
{
if (control.GetType() == typeof(T))
resultCollection.Add((T)control);
if (control.HasControls())
GetControlList(controlCollection, ref resultCollection);
}
}
I am having problems with the following line:
resultCollection.Add((T)control);
I get the error ...
Cannot convert type 'System.Web.UI.Control' to 'T'
Any ideas?
Problem:
Since
T
can be areference type
or avalue type
, compiler needs more information.You can not convert and
Integer
toControl
.Solution:
To fix this, add
where T : Control
orwhere T : class
(a more general) constraint to state thatT
will always be a reference type.Example:
ref
keyword. Since, List is a reference type, it's reference will be passed.