私は VS2010 の拡張機能を作成しています。私のパッケージIVsSelectionEvents
は、ソリューション エクスプローラーでの選択を追跡するために実装されています。
public int OnSelectionChanged(
IVsHierarchy pHierOld,
uint itemidOld,
IVsMultiItemSelect pMISOld,
ISelectionContainer pSCOld,
IVsHierarchy pHierNew,
uint itemidNew,
IVsMultiItemSelect pMISNew,
ISelectionContainer pSCNew)
{
if (pSCNew != null)
{
uint count;
pSCNew.CountObjects((uint) Constants.GETOBJS_SELECTED, out count);
object[] selectedObjects = new object[count];
pSCNew.GetObjects((uint) Constants.GETOBJS_SELECTED, count, selectedObjects);
// What is the type of this object?
var selectedItem = selectedObjects[0] as ???;
}
return VSConstants.S_OK;
}
GetObjects
オブジェクトの配列を埋めますが、これらのオブジェクトの実際のタイプはわかりません。GetType
を返しますがSystem.__ComObject
、これはあまり役に立ちません。これらのオブジェクトは既知のインターフェースを実装していると思いますが、どれがどれかを知るにはどうすればよいでしょうか? これはどこにも文書化されていないようです...現在dynamic
、オブジェクトのプロパティにアクセスするために使用していますが、理想的ではありません。とにかく、このオブジェクトによってどのメソッドが公開されているかわかりません(ウォッチ ウィンドウのプロパティ)
ソリューション エクスプローラーのプロジェクト アイテムによって実装されているインターフェイスを知っている人はいますか?