私は、いくつかの単純なルールを使用して立っているシンボルに基づいてターゲットタイプを決定し、最後にそれにナビゲートすることになっている 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。
私は何を間違っていますか?