Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用window.external将javascript日期对象传递给C WebBrowser控件_C#_Javascript_.net_Webbrowser Control_Com Interop - Fatal编程技术网

C# 使用window.external将javascript日期对象传递给C WebBrowser控件

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

我能够从WebBrowser WinForms控件调用WebBrowser.ObjectForScript with javascript window.external的C方法,并传递string、int、bool等。但是我不知道如何传递javascript日期对象,以及如何将其转换/封送到.NET DateTime类


显然,我可以传递一个字符串并解析它,但这并不是重点。我只是好奇如何使用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);
    }
}