2
对于某些背景,这与Passing IEnumerable Variables into .NET from ColdFusion有关。我改变了代码来使用列表,并取得了进展,但在使用.NET和ColdFusion的简单数据类型以外的其他任何东西时,仍然会遇到障碍。所以这是当前的问题。未找到方法使用ColdFusion列表调用.NET方法
首先,我有一个.dll具有以下VideoWallEvent.cs文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CoStar.Utilities.VideoWall
{
public class VideoWallEventActivityCollection
{
public string CountryCode { get; set; }
public DateTime ActivityDate { get; set; }
public List<VideoWallEvent> Events { get; set; }
}
public class VideoWallEvent
{
public string ID { get; set; }
public decimal Latitude { get; set; }
public decimal Longitude { get; set; }
public VideoWallEvent(string EventID, decimal EventLatitude, decimal EventLongitude)
{
ID = EventID;
Latitude = EventLatitude;
Longitude = EventLongitude;
}
}
}
我也产生了使用现有的问题JNBProxyGUI.exe
以下指示代理对象的对象。把那上面的DLL,我已经生成的代理坛子,运行以下ColdFusion代码:
<cfset UtilitiesProxy = ExpandPath("UtilitiesProxy.jar") />
<cfset CoStarUtilities = ExpandPath("CoStar.Utilities.dll") />
<cfset Paths = ArrayToList([CoStarUtilities, UtilitiesProxy])>
<cfset theEvent = CreateObject(".net", "CoStar.Utilities.VideoWall.VideoWallEvent", Paths) />
<cfset eventList = CreateObject(".net","System.Collections.Generic.List`1", Paths).init(theEvent.getDotNetClass()) />
<cfset eventList.Add(theEvent.Init("1234", javacast("bigdecimal","30.2669444"), javacast("bigdecimal","-97.7427778"))) />
<cfset eventList.Add(theEvent.Init("1235", javacast("bigdecimal","30.2669444"), javacast("bigdecimal","-97.7427778"))) />
<cfset eventCollection = CreateObject(".net", "CoStar.Utilities.VideoWall.VideoWallEventActivityCollection", CoStarUtilities) />
<cfdump var="#eventList.ToArray()#" label="Items in eventList" />
<hr />
<cfdump var="#eventCollection#" label="eventCollection" />
<cfdump var="#eventList#" label="eventList" />
<cfset eventCollection.Set_Events(eventList) />
这给了我下面的输出:
正如你可以看到从截图,我可以成功添加项目到列表中,我可以得到期望List对象的ActivityCollection对象,但调用Set_Events
方法并通过列表会抛出以下错误:
The Set_Events method was not found.
Either there are no methods with the specified method name and argument types
or the Set_Events method is overloaded with argument types that ColdFusion cannot
decipher reliably. ColdFusion found 0 methods that match the provided arguments.
If this is a Java object and you verified that the method exists, use the javacast
function to reduce ambiguity.
The error occurred in C:/inetpub/scribble/VideoWall/index.cfm: line 17
15 : <cfdump var="#eventList#" label="eventList" />
16 :
17 : <cfset eventCollection.Set_Events(eventList) />
所以我现在需要帮助搞清楚如何正确推送此列表到Set_Events()方法。
我很好奇,想知道你会得到什么,如果你叫 –
我弄不明白。 –
我想知道DotNetProxy是否错误地设置了Set_Events()增变器。我想知道如果你在施工过程中用一个空的List初始化Events属性会有什么不同。 –