Я пытаюсь создать экземпляр и вызвать методы объекта .net, созданного из dll из coldfusion. Это работает, когда я вызываю методы с одним или нулевым аргументом, но не работает с -
System.MissingMethodException: не удалось найти универсальный метод coldfusion2net.test.setvars
когда я пытаюсь вызвать метод с более чем одним аргументом.
Вот мой простой класс 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 я использую Visual Studio 2010 с таргетингом на среду выполнения .net 3.5 (что есть у нас на наших серверах). Я использую ColdFusion 8,0,0,176276 , чтобы попытаться загрузить DLL.
Кто-нибудь еще видел что-нибудь подобное? Я делаю что-то неправильно? Это ошибка CF?
Я просматривал статью о документах Adobe, посвященных ограничениям взаимодействия .NET, но самое близкое, что я обнаружил, - «ColdFusion не может определить правильное преобразование типов данных, если метод имеет несколько подписей, которые имеют одинаковое количество параметров и отличаются только в параметре типы данных ". Здесь, похоже, это не проблема.