これは、すでにを使用している既存のアプリケーション用であるため、ラップアラウンドしてAwesomium
、コードの残りの部分をNETにできるだけ近づけようとしています。WebBrowser
WebBrowser
このライブラリにはJSObject
、javascriptオブジェクトを表すというクラスがあります。たとえば、クラスのExecuteJavascriptWithResult
メソッドを呼び出すことで、このいずれかを取得できます。のようにWebView
呼び出すと、ドキュメントを表すが表示されます。myWebView.ExecuteJavascriptWithResult("document", string.Empty).ToObject()
JSObject
と呼ばれる不変のクラス(フィールドはreadonly JSObject
オブジェクトのみ)を作成しています。このクラスJSObjectWrap
をラップアラウンドして、やJSObject
などの.NETクラスをエミュレートする他のクラスの基本クラスとして使用します。現在、これらのクラスは実装していませんが、実装しています。私が最初に考えたのは、(実装する代わりに)ファイナライザーで基になる'メソッドを呼び出して、コードの残りの部分を(どこにでも追加して、すべてが適切に処分されている)。HtmlElement
HtmlDocument
Dispose
JSObject
JSObject
Dispose
JSObjectWrap
JSObjectWrap
Dispose
using
JSObjectWrap
しかし、2つ以上がJSObjectWrap
同じ基礎JSObject
を持ち、そのうちの1つが完成すると、もう1つが台無しになることに気づきましたJSObjectWrap
。だから今、私は多分私がそれらのそれぞれが参照されているものの静的な数を数えDictionary
続けるべきだと思っていますが、これは厄介に聞こえ、大きなパフォーマンスの問題を引き起こす可能性があると思います。JSObjects
JSObjectWrap
これは私には一般的なパターンのように聞こえるので、他の誰かがより良いアイデアを持っているのだろうかと思います。