We will create a class for the tool called TextEditorLaunchTool, that extends DesktopToolExtensionPoint.
[ExtensionOf(typeof (DesktopToolExtensionPoint))]
public class TextEditorLaunchTool : Tool<IDesktopToolContext>
{
public TextEditorLaunchTool() {}
}
We know that our tool class must implement ITool in order to satisfy the requirements of the extension point. However, implementing ITool directly is not a recommended practice. Instead, our tool should extend the abstract base class Tool that provides some of the boiler-plate implementation of ITool already.
Recall that every tool extension point has a corresponding context interface that defines what tools will be able to do. Note that Tool is a generic class that takes the tool context interface type as its parameter.