Поскольку List<MyObject>
не является коллекцией MyObjectCollection. Обратное верно: вы можете привести MyObjectCollection к списку, потому что MyObjectCollection наследует от List<MyObject>
и, таким образом, для всех намерений и целей IS A List<MyObject>
.
Единственное, что вы можете сделать, это определить конструктор в MyObjectCollection, который принимает Ienumerable в качестве параметра и инициализирует себя данными другого, но при этом создается новый объект, содержащий те же данные:
public class MyObjectCollection : List<MyObject>
{
public MyObjectCollection(IEnumerable<MyObject> items)
{
Addrange(items);
}
}
UPDATE:
Как отмечено в комментарии, вы МОЖЕТЕ выполнить приведение успешно во время выполнения, при условии, что DoSomething действительно возвращает экземпляр MyObjectCollection. Если это так, то объект фактически является MyObjectCollection, и приведение является полностью законным.
Я бы сказал, это плохая практика, с моей точки зрения, подбрасывать что-то подобное. Если функция возвращает List, вам не следует полагаться на конкретную реализацию List. Либо измените тип возврата DoSomething, если у вас есть эта функция, и верните коллекцию MyObjectCollection, либо обработайте ее в виде списка.