Допустим, у меня есть класс, как
public class Complex { } // this is what I mean when I say List<Complex>
// its just a user-defined class or type if you will
Теперь, допустим, у меня есть метод, который возвращает список, содержащий объекты.
Теперь, допустим, я могу дополнительно гарантировать, что каждый из этих объектов в списке на самом деле имеет тип Complex (другими словами, List )
Я бы хотел самый безболезненный способ составления этого списка, насколько это возможно. Однострочник был бы идеальным вариантом, но несколько строк тоже подойдут.
Вот что я попробовал (но не работает - исключение InvalidCastOperation):
// Sorry this is so hard to read! Also .Cast<Complex>() doesn't work either :(
return (ComplexCollection) ((List<Complex>) ((List<object>) complexElementsDictionary["ComplexElementCollection"]).OfType<Complex>());
Некоторые особенности этого фрагмента кода:
ComplexCollection inherits List<Complex>
complexElementsDictionary is of type (Dictionary<string, List<object>)
Таким образом, я попрошу Словарь <> для соответствующего списка объектов. Затем я пытаюсь привести этот список к тому, чем он должен быть, то есть к списку Complex.
Примечание - Пожалуйста, попробуйте игнорировать тот факт, что я кастую так во время выполнения. Я десериализирую коллекцию XML (на самом деле в app.config), и именно так я решил это сделать. Возможно, есть и лучший способ, но сейчас я просто хочу посмотреть, знает ли кто-нибудь, как сделать то, что я прошу.
Спасибо большое! Я надеюсь, что ясно, о чем я спрашиваю, и если нет, я обновлю вопрос.