1

私は、いくつかの単純なルールを使用して立っているシンボルに基づいてターゲットタイプを決定し、最後にそれにナビゲートすることになっている Rider/ReSharper nav-from-here プラグインを作成しています。

最初の部分は問題ありません。必要な FQN を作成できましたが、ナビゲーションに苦労しています。このStackOverflow の投稿を見つけて、このアプローチを試してみようと思いました。そのため、インスタンスを作成して使用を取得し、最終的にその宣言を取得できるようにするTypeFactory.CreateTypeByCLRNameために、2時間ほど使用しようとしました。しかし、API が変更されたようで、何をしてもコードを動作させることができません。IDeclaredTypeIDeclaredElementGetTypeElement()

これが私がこれまでに得たものです:

// does not work with Modules.GetModules(), either
foreach (var psiModule in solution.GetPsiServices().Modules.GetSourceModules())
{
    var type = TypeFactory.CreateTypeByCLRName("MyNamespace.MyClassName", psiModule);
    var typeElement = type.GetTypeElement();

    if (typeElement != null)
    {
        MessageBox.ShowInfo(psiModule.Name); // to make sure sth is happening
        break;
    }
}

奇妙な部分は、実際にメッセージ ボックスが表示されることです。ただし、タブMyClassName.csがアクティブな場合のみです。ピントが合っているときは、すべて問題ありません。type.IsResolvedそうでない場合、またはファイルが閉じられている場合、クラスは解決されませんfalse

私は何を間違っていますか?

4

1 に答える 1