.NETからGeckoを使う

WindowsだとMozilla ActiveX Controlを利用してC#からGeckoが使えるみたいだけど、クロスプラットフォームにやりたいと考えたので、C#からGeckoを呼び出せないか検討中。って、誰かが既にやってそうなので、知ってる方が居たら教えてください。
まず、NS_InitEmbedding/NS_TermEmbeddingは普通のC呼び出しなのでC#のunsafeコードとして実現可能と思われます。問題はC++な部分をどうやってC#から利用するかですが、C++な部分のうちXPCOMインタフェースを実装している部分はxptcallを利用するとC呼び出しとして書けそうな感じがします。更に問題なのはXPCOMインタフェースからアクセスできない部分です。その辺をどうしようか考えつつ、というか、そういう部分は必須なのか調べ中。
http://www.mozilla.org/projects/embedding/
http://www.mozilla.org/scriptable/
http://www.mozilla.org/scriptable/roadmap.html
http://aspn.activestate.com/ASPN/Downloads/Komodo/PyXPCOM/doc/architecture
http://www.mozilla.org/projects/blackwood/connect/
http://www.mozilla.org/projects/embedding/PublicAPIs.html
http://lxr.mozilla.org/seamonkey/source/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp
http://www.mozilla.org/unix/gtk-embedding.html
http://www.mozilla.org/projects/blackwood/webclient/