public virtual BehaviorDispatcher DetachBehavior() { if (InnerBehavior != null && InnerBehavior.Parent != null) InnerBehavior = InnerBehavior.Parent; return InnerBehavior; }
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 ;// ?? надо думать! }
//......................................................................... public virtual void AttachBehavior(BehaviorDispatcher bd) { if (bd != null) { bd.Parent = InnerBehavior; InnerBehavior = bd; } }