Esempio n. 1
0
        public virtual BehaviorDispatcher DetachBehavior()
        {
            if (InnerBehavior != null && InnerBehavior.Parent != null)
                InnerBehavior = InnerBehavior.Parent;

            return InnerBehavior;
        }
Esempio n. 2
0
        public ClassDefinition(SchemeNode parent, string name, bool copyExtensions, ClassDefinition[] extensions, params SlotDefinition[] slots)
            : base(parent)
        {
            if (parent == null)
                InnerIsSchemeEditable = false;

            CopyExtensions = copyExtensions;

            InnerName = name;
            InnerFullName = Version.ToString("D");

            if (extensions != null && extensions.Length > 0)
                foreach (ClassDefinition ext in extensions)
                    if (!InnerInheritanceList.Contains(ext.Name))
                        InnerExtend(ext, false, true);

            InnerInheritanceList[KeyName] = this;
                // Если в InheritanceList-е будут FullName, то потом сложно производить
                // диспач для бихейверов.
                // всущности, фул-нейм нужен, что бы сигнализировать о наличии "динамических" классов всписке
                // но не понятно, зачем это нужно!

            // XXX был Add, поменял на [] (Pilya)
            //KeyName,
            //	this);

            if (slots != null && slots.Length > 0)
                foreach (SlotDefinition slot in slots)
                    if (slot != null)
                        InnerAddSlot(slot, true, true);

            if (CopyExtensions)
                InnerBehavior = new BehaviorDispatcher(this);
            else
                ;// ?? надо думать!
        }
Esempio n. 3
0
 //.........................................................................
 public virtual void AttachBehavior(BehaviorDispatcher bd)
 {
     if (bd != null) {
         bd.Parent = InnerBehavior;
         InnerBehavior = bd;
     }
 }