我正在尝试环绕Awesomium
并使其看起来尽可能接近 NET 的其余代码,WebBrowser
因为这是针对已经使用WebBrowser
.
在这个库中,有一个名为的类JSObject
,它代表一个 javascript 对象。例如,您可以通过调用类的ExecuteJavascriptWithResult
方法来获得其中之一WebView
。如果你把它叫做 like myWebView.ExecuteJavascriptWithResult("document", string.Empty).ToObject()
,那么你会得到一个JSObject
代表文档的。
我正在编写一个不可变的类(它的唯一字段是一个readonly JSObject
对象)JSObjectWrap
,JSObject
我想将其用作其他类的基类,这些类将模拟 .NET 类,例如HtmlElement
和HtmlDocument
。现在,这些类不实现Dispose
,但是实现了JSObject
。我首先想到的是在我的终结器中调用底层JSObject
的Dispose
方法(而不是实现),以便我的其余代码可以保持原样(而不是必须在任何地方添加 ' 并确保每个都是妥善处置)。JSObjectWrap
JSObjectWrap
Dispose
using
JSObjectWrap
但我刚刚意识到,如果两个以上JSObjectWrap
的具有相同的基础JSObject
,其中一个得到最终确定,这将搞砸另一个JSObjectWrap
。所以现在我在想也许我应该保持一个静态Dictionary
并JSObjects
计算它们中的每一个被 a 引用了多少,JSObjectWrap
但这听起来很混乱,我认为可能会导致主要的性能问题。
由于这对我来说听起来像是一种常见的模式,我想知道是否还有其他人有更好的主意。