예제 #1
0
        public void ChangeFromClassToInterface(Classifier @class)
        {
            @class.IsInterface = true;
            // the class itself cannot have a base class any more
            @class.ClearBaseClass(_messageSystem);
            // find all derived classes with this base class
            var derivedClasses = _classifiers.FindAllDerivedClassifiers(@class);
            foreach (var derivedClass in derivedClasses)
            {
                derivedClass.ClearBaseClass(_messageSystem);
                derivedClass.AddInterfaceImplementation(@class, _messageSystem);
            }

            // fire the notification at the end, because this will change all
            // existing classifier list items
            
            _messageSystem.Publish(@class, new ClassToInterfaceEvent(@class.Name));
        }