未找到方法调用.NET方法与ColdFusion的列表 [英] Method Not Found Calling .NET Method with List from ColdFusion
问题描述
有关的一些背景,这是关系到<一个href="http://stackoverflow.com/questions/16742477/passing-ienumerable-variables-into-net-from-coldfusion">Passing IEnumerable的变量到从ColdFusion的.NET 的。我已经改变了code使用一个列表,而不是,并取得了进展,但仍然在使用什么比使用.NET和ColdFusion的简单数据类型等打路障。因此,这里的当前问题。
For some background, this is related to Passing IEnumerable Variables into .NET from ColdFusion. I've changed the code to use a list instead, and have made progress, but continue to hit roadblocks when using anything other than simple data types with .NET and ColdFusion. So here's the current issue.
首先,我有以下VideoWallEvent.cs文件一个.dll:
First, I have a .dll with the following VideoWallEvent.cs file:
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 code:
I've also generated a proxy object object using JNBProxyGUI.exe
following instructions from the prior question. Give that the above dll, and the proxy jar I've generated, I run the following ColdFusion code:
<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
方法并通过列表引发以下错误:
As you can see from the screenshot, I can successfully add items to the list, I can get the ActivityCollection object that expects a List object, but calling the Set_Events
method and passing the List throws the following error:
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()方法。
So I now need help figuring out how to properly push this List into the Set_Events() method.
推荐答案
(从评论)的
不管你相信与否,这只是一个程序集路径问题。你必须在汇编列表中使用这两个文件,而不仅仅是 CoStarUtilities
,即:
Believe it or not it is just an assembly path problem. You have to use both files in the assembly list, not just CoStarUtilities
, ie:
<cfset eventCollection = CreateObject(".net"
, "CoStar.Utilities.VideoWall.VideoWallEventActivityCollection"
, Paths ) />
这篇关于未找到方法调用.NET方法与ColdFusion的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!