とりあえず、補完候補を得るためには、.NET の型情報や XML Document にアクセスできなければならない。
これは、.NET プログラム上なら Type 型や XmlReader 型を利用できるし、Win32 アプリ上からでも COM を利用して結構簡単にアクセスすることができる。*1


問題は、不完全な編集中のソースコード上の任意の位置において、現在有効な補完候補を絞り込むことだ。
完全なソースコードであれば、コンパイルが通るし CodeDOM も構築できるので、結構手軽かもしれない*2のだが、不完全なソースコードが相手だと実際にコンパイラを通してみるという手は確実ではない。
やはり、トークナイザとパーサを通して現在の入力コンテキストを得るしかないんだろうか。

*1:ようするに、Java の JVMPI みたいなかんじで .NET CLRホスティングする Win32 アプリケーションを作るだけ

*2:きっと、CodeDOM からコンテキスト情報を逆算するのは、そんなに簡単にはいかないだろう