C# 使用window.external将javascript日期对象传递给C WebBrowser控件
我能够从WebBrowser WinForms控件调用WebBrowser.ObjectForScript with javascript window.external的C方法,并传递string、int、bool等。但是我不知道如何传递javascript日期对象,以及如何将其转换/封送到.NET DateTime类C# 使用window.external将javascript日期对象传递给C WebBrowser控件,c#,javascript,.net,webbrowser-control,com-interop,C#,Javascript,.net,Webbrowser Control,Com Interop,我能够从WebBrowser WinForms控件调用WebBrowser.ObjectForScript with javascript window.external的C方法,并传递string、int、bool等。但是我不知道如何传递javascript日期对象,以及如何将其转换/封送到.NET DateTime类 显然,我可以传递一个字符串并解析它,但这并不是重点。我只是好奇如何使用javascript Date和.NET DateTime来实现这一点?您可以利用这样一个事实,在java
显然,我可以传递一个字符串并解析它,但这并不是重点。我只是好奇如何使用javascript Date和.NET DateTime来实现这一点?您可以利用这样一个事实,在javascript中,表示为自1970-01-01 00:00:00 UTC以来经过的毫秒数。使用以下方法从日期对象获取该值: 如果可以将该值作为double封送到C,则可以使用其构造函数和方法创建适当的DateTime对象:
我终于让它工作了。我不知道为什么,但我无法使用动态。以下是解决方案:
[ComVisible(true)]
public class Foo
{
public void Bar(object o)
{
var dateTime = (DateTime)o.GetType().InvokeMember("getVarDate", BindingFlags.InvokeMethod, null, o, null);
Console.WriteLine(dateTime);
}
}
我为我的项目找到了更好的解决方案 在javascript中:
var date = new Date();
myComObject.DoSomething(date.getVarDate());
在C中
我可以做到这一点,但我只是在寻找如何在C中读取javascript日期对象的解决方案。我甚至不确定这是否可行,但如果不可行,也没关系。但我希望有办法做到这一点。据我所知,CAs中没有Javascript日期对象,当我将日期对象传递给C时,它是使用COM进行封送的,所以我认为这是可能的。当然有可能,但我想知道如何在不调用Javascript中的getVarDate的情况下做到这一点。
[ComVisible(true)]
public class Foo
{
public void Bar(object o)
{
var dateTime = (DateTime)o.GetType().InvokeMember("getVarDate", BindingFlags.InvokeMethod, null, o, null);
Console.WriteLine(dateTime);
}
}
var date = new Date();
myComObject.DoSomething(date.getVarDate());
[ComVisible(true)]
public class Foo
{
public void Bar(DateTime dateTime)
{
Console.WriteLine(dateTime);
}
}