[英]Passing javascript Date object to C# WebBrowser control using window.external
我能夠從WebBrowser
WinForms控件中使用javascript window.external
調用WebBrowser.ObjectForScripting
C#方法,並傳遞string
, int
, bool
等。但是我不知道如何傳遞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.