我正在尝试实例化和调用从coldfusion 的dll 创建的.net 对象上的方法。当我使用一个或零个参数调用方法但失败时,这有效 -
System.MissingMethodException:找不到通用方法coldfusion2net.test.setvars
当我尝试调用具有多个 arg 的方法时。
这是我的简单 C# 类:
namespace coldfusion2net
{
public class test
{
protected string myvar;
protected string myvar2;
public void setvars(string v, string v2) {
myvar = v;
myvar2 = v2;
}
public void setvar(string v) {
myvar = v;
}
public string getvar(){
return myvar;
}
}
}
这是我的 ColdFusion 测试:
<cfset dll = ExpandPath('./coldfusion2net.dll')>
<cfobject type=".NET" name="test" class="coldfusion2net.test" assembly="#dll#">
<cfset test.init()>
<!--- object has been loaded --->
<cfdump var="#test#">
<!--- so far so good --->
<cfset test.setvar("foo")>
<cfset s = test.getvar()>
<cfoutput>#s#</cfoutput>
<!--- wtf??? --->
<cfset test.setvars("foo","bar")>
为了编译 dll,我使用了针对 .net 3.5 运行时的 Visual Studio 2010(这是我们在服务器上拥有的)。我正在使用 ColdFusion 8,0,0,176276 来尝试加载 dll。
有没有其他人见过这样的事情?难道我做错了什么?这是CF错误吗?
我查看了有关 .NET 互操作性限制的 Adobe 实时文档的文章,但我发现最接近的是“如果方法具有多个签名且参数数量相同且仅在参数上有所不同,ColdFusion 无法确定正确的数据类型转换数据类型”。这似乎不是这里的问题。