0

我正在探索为 ReSharper / Rider 编写插件。按照文档的示例,我正在为 ReSharper 构建一个上下文操作。

这是上下文动作,它还没有做太多:

[ContextAction
(
    Name = "New context action",
    Description = "Some description...",
    Group = "C#",
    Disabled = false,
    Priority = 1
)]
public sealed class NewContextAction : ContextActionBase
{
    public override string Text => "New context action";

    public NewContextAction(LanguageIndependentContextActionDataProvider dataProvider)
    {
        var selectedTreeNode = dataProvider.GetSelectedElement<ITreeNode>();

        // --> How can I get a reference to the type?
    }

    ...
}

在此处输入图像描述

每当我单击源代码中的某些内容(如上图所示的类型)时,都会调用上下文操作类的构造函数。我可以访问名称,ITreeNode但我不知道如何从树表示移动到 ReSharper 使用的实际类型表示。

点击时

问题

如何获取对用户单击的类型 ( IType, ...) 的引用?IDeclaredType

4

1 回答 1

1

你需要这样的东西:

var objectCreationExpression = dataProvider.GetSelectedElement<IObjectCreationExpression>();
      var typeUsage = objectCreationExpression?.TypeUsage;

      if (typeUsage != null)
      {
        var type = CSharpTypeFactory.CreateType(typeUsage);
      }
于 2021-12-23T18:17:46.807 回答