tags:

views:

147

answers:

3

I have field X of type ILIST <ITopics>

I am trying to do this:

Object.X= AListOfSometypeThatInheretsITopics;

How do I properly cast the list to the Object.X?

+5  A: 

This requires generic variance, which is unfortunately not possible with IList<T> because it expresses a mutable list interface. Your best bet is to either use a non-generic IList or a generic IEnumerable<T> (which is amenable to variance as of C# 4) as the field/property type, or convert it by a mechanism such as

x = inputList.OfType<ITopics>().ToList();

to obtain a list of the appropriate flavor.

Jeffrey Hantin
+2  A: 

Try

object.x = IList<ITopics>.ofType<ITopics>().ToList()
jlembke
A: 

you can use the IEnumerable<T> extension method Cast

Object.X = yourList.Cast<ITopics>().ToList();
Xian
That gives you an IEnumerable<T> not an IList<T>.
Jeffrey Hantin