IVsRefactorNotify Interface

Notifies code generators about the occurrence of refactoring operations.

Namespace:  Microsoft.VisualStudio.Shell.Interop
Assembly:  Microsoft.VisualStudio.Shell.Interop.8.0 (in Microsoft.VisualStudio.Shell.Interop.8.0.dll)

Syntax

'Declaration
<InterfaceTypeAttribute()> _
<GuidAttribute("130497E3-5CDB-4F29-9804-A2AF805016D7")> _
Public Interface IVsRefactorNotify
'Usage
Dim instance As IVsRefactorNotify
[InterfaceTypeAttribute()]
[GuidAttribute("130497E3-5CDB-4F29-9804-A2AF805016D7")]
public interface IVsRefactorNotify
[InterfaceTypeAttribute()]
[GuidAttribute(L"130497E3-5CDB-4F29-9804-A2AF805016D7")]
public interface class IVsRefactorNotify
public interface IVsRefactorNotify

Remarks

By implementing the IVsRefactorNotify interface, you provide the Visual Studio language service with the capability to notify code generators about refactoring operations, such as symbolic-rename or parameter-reordering. The Visual Studio language service identifies the symbol that is changed by passing a string using Refactor-Qualified Name, RQName, syntax. The RQName syntax description is as follows:

rq_name := rq_ns | rq_agg | rq_membvar | rq_event | rq_meth | rq_prop

rq_ns := "Ns" "(" rq_sym_name_list ")"

rq_agg := "Agg" "(" rq_sym_name_list ")"

rq_membvar := "Membvar" "(" rq_agg "," rq_sym_name ")"

rq_event := "Event" "(" rq_agg "," rq_sym_name ")"

rq_meth := "Meth" "(" rq_agg "," rq_sym_name "," rq_typevarcount ",
                    " rq_params ")"

rq_prop := "Prop" "(" rq_agg "," rq_sym_name "," rq_typevarcount ",
                    " rq_params ")"

rq_params := "Params" "(" rq_param_list ")"

rq_param_list := rq_param |
                 rq_param "," rq_param_list

rq_param := "Param" "(" rq_type_sig ")"

rq_type_sig := rq_aggtype_sig | 
               rq_array_sig | 
               rq_pointer_sig | 
               rq_param_mod_sig | 
               rq_typevar_sig | 
               rq_void_sig | 
               rq_error_sig | 
               rq_null_sig

rq_aggtype_sig := "AggType" "(" rq_agg "," rq_typeparams ")"

rq_typeparams := "TypeParams" "(" rq_type_sig_list ")"

rq_type_sig_list := rq_type_sig |
                    rq_type_sig "," rq_type_sig_list

rq_array_sig := "Array" "(" rq_rank "," rq_type_sig ")"

rq_pointer_sig := "Pointer" "(" rq_type_sig ")"

rq_param_mod_sig := "Ref" "(" rq_type_sig ")" |
                    "Out" "(" rq_type_sig ")"

rq_typevar_sig := "TyVar" "(" rq_simple_name ")"

rq_void_sig := "Void"

rq_error_sig := "Error" "(" rq_text ")"

rq_null_sig := "Null"

rq_sym_name_list := rq_sym_name |
                    rq_sym_name "," rq_sym_name_list

rq_sym_name := rq_aggname | rq_nsname | rq_membvarname | 
               rq_methpropname | rq_intfexplname

rq_nsname := "NsName" "(" rq_simple_name ")"

rq_aggname := "AggName" "(" rq_simple_name "," rq_typevarcount ")"

rq_membvarname := "MembvarName" "(" rq_simple_name ")"

rq_methpropname := rq_methname | rq_propname | rq_eventname

rq_methname := "MethName" "(" rq_simple_name ")"

rq_propname := "PropName" "(" rq_simple_name ")"

rq_eventname := "EventName" "(" rq_simple_name ")"

rq_intfexplname := "IntfExplName" 
                   "(" rq_type_sig "," rq_methpropname ")"

rq_typevarcount := "TypeVarCnt" "(" rq_number ")"

rq_simple_name = rq_text

rq_rank := rq_number

rq_number := [0-9]+

rq_text := [any character except ".", "," "(" and ")"]

Examples

The following example demonstrates how to use RQName syntax to describe the symbols.

System.Collections.Generic;
using System.Text;

namespace ConsoleApplication                   //1
{
    interface ITest<T>                         //2
    {
        void Foo(T t);                         //3
    }

    delegate void MyDel();                     //4

    class Program : ITest<int>
    {
        const int i = 5;                       //5
        string s;                              //6
        event MyDel e;                         //7
        static void Main(string[] args)        //8
        {
        }
        void ITest<int>.Foo(int t)             //9
        {
        }
        int this[int i] { get { return 1; } }  //10
    }
}

namespace Foo.Bar.Blank                        //11
{
}

1: Ns(NsName(ConsoleApplication))

2: Agg(NsName(ConsoleApplication),AggName(ITest,TypeVarCnt(1)))

3: Meth(Agg(NsName(ConsoleApplication),AggName(ITest,TypeVarCnt(1))),
        MethName(Foo),TypeVarCnt(0),Params(Param(TyVar(T))))

4: Agg(NsName(ConsoleApplication),AggName(MyDel,TypeVarCnt(0)))

5: Membvar(Agg(NsName(ConsoleApplication),AggName(Program,TypeVarCnt(0))),
        MembvarName(i))

6: Membvar(Agg(NsName(ConsoleApplication),AggName(Program,TypeVarCnt(0))),
        MembvarName(s))

7: Event(Agg(NsName(ConsoleApplication),AggName(Program,TypeVarCnt(0))),
      EventName(e))

8: Meth(Agg(NsName(ConsoleApplication),AggName(Program,TypeVarCnt(0))),
        MethName(Main),TypeVarCnt(0),
        Params(Param(Array(1,AggType(Agg(NsName(System),
        AggName(String,TypeVarCnt(0))),TypeParams())))))

9: Meth(Agg(NsName(ConsoleApplication),AggName(Program,TypeVarCnt(0))),
        IntfExplName(AggType(Agg(NsName(ConsoleApplication),
        AggName(ITest,TypeVarCnt(1))),TypeParams(AggType(Agg(NsName(System),
        AggName(Int32,TypeVarCnt(0))),TypeParams()))),MethName(Foo)),

10: Prop(Agg(NsName(ConsoleApplication),AggName(Program,TypeVarCnt(0))),
         PropName($Item$),TypeVarCnt(0),Params(Param(AggType(Agg(NsName(System),
         AggName(Int32,TypeVarCnt(0))),TypeParams()))))

11: Ns(NsName(Foo),NsName(Bar),NsName(Blank))

See Also

Reference

IVsRefactorNotify Members

Microsoft.VisualStudio.Shell.Interop Namespace

Other Resources

Refactoring