IVsRefactorNotify Interface
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Notifies code generators about the occurrence of refactoring operations.
public interface class IVsRefactorNotify
public interface class IVsRefactorNotify
__interface IVsRefactorNotify
[System.Runtime.InteropServices.Guid("130497E3-5CDB-4F29-9804-A2AF805016D7")]
[System.Runtime.InteropServices.InterfaceType(1)]
public interface IVsRefactorNotify
[<System.Runtime.InteropServices.Guid("130497E3-5CDB-4F29-9804-A2AF805016D7")>]
[<System.Runtime.InteropServices.InterfaceType(1)>]
type IVsRefactorNotify = interface
Public Interface IVsRefactorNotify
- Attributes
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 MyTest(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>.MyTest(int t) //9
{
}
int this[int i] { get { return 1; } } //10
}
}
namespace MyTest.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(MyText),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(MyTest)),
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(MyTest),NsName(Bar),NsName(Blank))
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 ")"]