簡體   English   中英

使用window.external將javascript日期對象傳遞給C#WebBrowser控件

[英]Passing javascript Date object to C# WebBrowser control using window.external

我能夠從WebBrowser WinForms控件中使用javascript window.external調用WebBrowser.ObjectForScripting C#方法,並傳遞stringintbool等。但是我不知道如何傳遞javascript Date對象以及如何將其轉換/編組為.NET。 DateTime類。

顯然,我可以傳遞一個string並對其進行解析,但這實際上不是重點。 我只是很好奇如何用javascript Date和.NET DateTime完成它?

您可以利用以下事實:Java語言中的日期表示為自UNIX時代 (1970-01-01 00:00:00 UTC)以來經過的毫秒數。 使用valueOf()方法從Date對象獲取該值:

var millisecondsSinceEpoch = yourDate.valueOf();

如果可以將該值作為double 送給C#,則可以使用其構造函數和AddMilliseconds()方法創建適當的DateTime對象:

DateTime yourDateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
    .AddMilliseconds(millisecondsSinceEpoch);

我為我的項目找到了更好的解決方案。

在javascript中:

var date = new Date();
myComObject.DoSomething(date.getVarDate());

在C#中

[ComVisible(true)]
public class Foo
{
    public void Bar(DateTime dateTime)
    {
        Console.WriteLine(dateTime);
    }
}

我終於讓它工作了。 我不知道為什么,但是我無法將它與dynamic一起使用。 解決方法如下:

[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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM