Я пытаюсь создать и вызвать методы объекта .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 не может определить правильное преобразование типа данных, если метод имеет несколько подписей, которые имеют одинаковые количество параметров и различаются только типами данных параметра ». Кажется, здесь проблема не в этом.