Re: Help. Шаблон type2type для C#.
От: lleeoo  
Дата: 18.03.09 15:49
Оценка:
Упрощенный вид кода:
Названия абстрактные.


    /*  Базовый класс реализующий дерево  */
    public class TreeItem : I...
    {
        TreeItem       _Parent;
        protected List<TreeItem> _Children = new List<TreeItem>();
        ...
    }
    //____________________________________________________________
    /*  конечный элемент дерева. Указатели на объекты SignalBase нужно хранить в двух деревьях */
    public class SignalBase : TreeItem, I...
    {
        string    _Base;
    ...
    }
    public class WrapperSignalBase : TreeItem
    {
    ...
        public override void NewTreeItem() { _Children.Add(new SignalBase()); }
    }
    //____________________________________________________________
    /*  конечный элемент дерева. Указатели на объекты SignalUser нужно хранить в двух деревьях */
    public class SignalUser : TreeItem, I...
    {
        string    _User;
    ...
    }
    public class WrapperSignalUser : TreeItem
    {
    ...
        public override void NewTreeItem() {  _Children.Add(new SignalUser()); }
    }
    //____________________________________________________________
    /*  Дерево сигналов которое используется как для индивидуального так и для обобщенного хранения данных  */
    public class TreeSignals : TreeItem
    {
        WrapperSignalBase   _HoldSignalBase;
        WrapperSignalUser   _HoldSignalUser;
    ...
    }
    //____________________________________________________________
    public class TestObject : TreeItem, I...
    {
    TreeSignals _TOSignals;
    ...
    }

    /*  Как мы видим TestObject-ов может быть много у одного проекта и каждый ТО хранит в себе дерево Сигналов.
        Но проект должен собрать все сигналы от каждого ТО в одно общее дерево.

    Но не имеет смысла создавать новые объекты SignalBase и SignalUser для передачи в дерево проекта.
       Я хотел бы хранить только указатели на них.

       Так вот когда я начал скидывать указатели Сигналов в дерево проекта, началась путаница с Парентом, он то указывает на ветку ТО.


    */
    public class Project : TreeItem, I...
    {
    TreeSignals _ProjectSignals;
    ...
        public override void NewTreeItem() { _Children.Add(new TestObject()); }
     }


Решение напрашивается очевидное не наследовать SignalBase и SignalUser от TreeItem а просто, создавать их объекты и в список детей добавлять их как конечный элемент.
В общемто получилось все достаточно тривиално.

Но хотел, каким-то образом подсовывать несколько Парентов одному Сигналу (SignalBase и SignalUser).

Думаю теперь понятно, написал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.