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
[InterfaceTypeAttribute()]
[GuidAttribute("130497E3-5CDB-4F29-9804-A2AF805016D7")]
public interface IVsRefactorNotify
[InterfaceTypeAttribute()]
[GuidAttribute(L"130497E3-5CDB-4F29-9804-A2AF805016D7")]
public interface class IVsRefactorNotify
[<InterfaceTypeAttribute()>]
[<GuidAttribute("130497E3-5CDB-4F29-9804-A2AF805016D7")>]
type IVsRefactorNotify = interface end
public interface IVsRefactorNotify
The IVsRefactorNotify type exposes the following members.
Methods
Name | Description | |
---|---|---|
OnAddParams | Called after a method had the parameters added. | |
OnBeforeAddParams | Called when a method is about to have the parameters added. | |
OnBeforeGlobalSymbolRenamed | Called when a symbol is about to be renamed. | |
OnBeforeRemoveParams | Called when a method is about to have the parameters removed. | |
OnBeforeReorderParams | Called when a method is about to have the parameters reordered. | |
OnGlobalSymbolRenamed | Called after a symbol is renamed. | |
OnRemoveParams | Called after a method had the parameters removed. | |
OnReorderParams | Called after a method had the parameters reordered. |
Top
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 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))
See Also
Reference
Microsoft.VisualStudio.Shell.Interop Namespace