我正在尝试将 CefSharp WebView 添加到我的 WPF 应用程序中,以代替我们使用的原始 WebBrowsers。WebBrowser 有一个 InvokeScript 函数(http://msdn.microsoft.com/en-us/library/cc452443(v=vs.110).aspx)它允许您调用 JavaScript 函数并可选择传入一个 obj 数组该 JS 函数的输入。
有什么方法可以对 CefSharp WebView 做类似的事情,我可以在其中将输入参数传递给 JavaScript 函数吗?例如,我可以这样做:
this.webBrowser.InvokeScript("scriptName", input0, input1, input2);
Run Code Online (Sandbox Code Playgroud)
使用 WebBrowser,是否有任何等效的功能或多个功能可以使用 CefSharp WebView 实现这一点?
我们django-simple-history
为我们的模型做好了准备.最近,一大堆模型被神秘地删除了.事实发生后几天就注意到了这一点,因此避免完整的数据库备份恢复会很好,因为这样可以消除事后发生的手动更改.
我找不到任何方法来轻松恢复模型实例,特别是删除的模型实例.我可以查询模型的历史版本并查找已删除的所有内容.有了这个,我还可以观察到他们所有人都有删除作为他们的最后一次改变.我可以在history-1上使用instance属性来获取删除前的状态,但是如果我尝试保存它是错误的,因为模型实例已被删除而且不再存在.
基本上,如果我有django-simple-history的历史记录,那么恢复已删除模型实例的最简洁方法是什么?如果可能的话,我想保留历史记录,所以在完全重新创建对象之前,我正在研究任何解决方案.
在我们的代码中,我们输入检查内容,然后立即需要转换它们。像这样的东西:
if((foo is SomeClass) && (foo as SomeClass).Bar != null) {
SomeClass fooClass = foo as SomeClass;
DoSomething(fooClass.Bar);
...
}
Run Code Online (Sandbox Code Playgroud)
我希望有某种方式,在显式类型检查之后,foo
可以隐式地将引用转换为类:
if (foo is SomeClass && foo.Bar != null) {
DoSomething(foo.Bar);
}
Run Code Online (Sandbox Code Playgroud)
它通过了(foo is SomeClass)
所以我们知道这foo
是一个SomeClass
. 该as
投似乎是多余的。如果您在已通过的语句中,(foo is SomeClass)
那么您似乎不必再显式转换foo
为SomeClass
在任何人谈论编码实践之前......我知道。理想情况下,在我们应用程序的大多数地方,我们充分利用泛型、抽象类、接口和所有其他方法以合理的方式与对象交互。但有时你会得到一个object
并需要检查它,尤其是像事件这样的事情。我没有用做一个真正的问题is
/as
全完了,我只是好奇,如果有一些神奇的语法我可以使用,这是一个有点清洁。这是语法优化的实验,不是实用性。
作为测试,我使用了一个名为 I call 的扩展方法IsAs
:
public static bool IsAs<T>(this object check, out T result) {
if (check is T) …
Run Code Online (Sandbox Code Playgroud) 我在AvalonEdit TextEditor
滚动到特定行时遇到了很多麻烦.该ScrollTo()
行为是简单地滚动,直到该行是在取景当中.我尝试过在互联网上发现的许多不同的方法,所以就像获得偏移一样
double visualTop = textEditor.TextArea.TextView.GetVisualTopByDocumentLine(line);
Run Code Online (Sandbox Code Playgroud)
但每个人都有自己的问题.例如,在上面的行中我得到了例外TextView.VisualLines
.