コード例 #1
0
        public override void Run(RefactoringOptions options)
        {
            DocumentLocation location      = options.GetTextEditorData().Caret.Location;
            IType            interfaceType = options.Dom.GetType(options.ResolveResult.ResolvedType);
            IType            declaringType = options.Document.CompilationUnit.GetTypeAt(location.Line + 1, location.Column + 1);

            options.Document.TextEditor.BeginAtomicUndo();
            CodeRefactorer refactorer = IdeApp.Workspace.GetCodeRefactorer(IdeApp.ProjectOperations.CurrentSelectedSolution);

            List <KeyValuePair <IMember, IReturnType> > members = new List <KeyValuePair <IMember, IReturnType> > ();

            foreach (IMember member in interfaceType.Members)
            {
                if (member.IsAbstract && !declaringType.Members.Any(m => member.Name == m.Name))
                {
                    members.Add(new KeyValuePair <IMember, IReturnType> (member, null));
                }
            }
            refactorer.ImplementMembers(declaringType, members, "implemented abstract members of " + interfaceType.FullName);

            options.Document.TextEditor.EndAtomicUndo();
        }