mirror of https://github.com/icsharpcode/ILSpy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
using System; |
|
|
|
namespace ICSharpCode.NRefactory.CSharp.Refactoring |
|
{ |
|
/// <summary> |
|
/// A specialized code action creates a code action assoziated with one special type of ast nodes. |
|
/// </summary> |
|
public abstract class SpecializedCodeAction<T> : ICodeActionProvider where T : AstNode |
|
{ |
|
/// <summary> |
|
/// Gets the action for the specified ast node. |
|
/// </summary> |
|
/// <returns> |
|
/// The code action. May return <c>null</c>, if no action can be provided. |
|
/// </returns> |
|
/// <param name='context'> |
|
/// The refactoring conext. |
|
/// </param> |
|
/// <param name='node'> |
|
/// The AstNode it's ensured that the node is always != null, if called. |
|
/// </param> |
|
protected abstract CodeAction GetAction(RefactoringContext context, T node); |
|
|
|
#region ICodeActionProvider implementation |
|
public System.Collections.Generic.IEnumerable<CodeAction> GetActions(RefactoringContext context) |
|
{ |
|
var node = context.GetNode<T>(); |
|
if (node == null) |
|
yield break; |
|
var action = GetAction(context, node); |
|
if (action == null) |
|
yield break; |
|
yield return action; |
|
} |
|
#endregion |
|
} |
|
} |
|
|
|
|