Есть класс дерева:
Code
public class Tree<T> where T : class
В нем метод получения поддерева:
Code
public Tree<T> GetSubTree(TreeNode<T> child)
Есть производный от него класс дерева костей:
Code
public class TreeBone : Tree<Bone>
который уточняет параметр класса и добавляет несколько методов, которые не зная параметр просто невозможно написать.
В нем в одном из методов получаем поддерево и пытаемся преобразовать в дерево костей:
Code
TreeBone temp = (TreeBone) GetSubTree(child)
VS и MonoDevelop эту строчку спокойно компилируют. Юнити на нее ругается:
Quote
InvalidCastException: Cannot cast from source type to destination type.
Т.е. не может преобразовать тип из Tree<T> в TreeBone
Вопрос - почему? И что делать? Не писать же массу классов на все возможные случаи деревьев?Добавлено (21.07.2011, 19:30)
---------------------------------------------
В-общем не парьтесь. Похоже я просто не понимаю как использовать обобщенные классы. Сейчас я все переделал совсем по другому. Все пока работает.
Если кто видел хорошее описание этих самых обобщенных классов - дайте плиз ссылку - почитаю.