Coldfusion访问.net对象父方法

时间:2014-05-15 15:13:42

标签: c# .net coldfusion openxml openxml-sdk

出于某种原因,Coldfusion在访问其创建的某个对象的父方法时遇到了问题。

考虑这段代码:

<cfscript>
  variables.sHTML = '<html><head><title></title></head><body><p>Hello <strong>World</strong></p></body></html>';

  try{
    variables.sAltChunkID = "altChunk1";
    variables.sExportDirectory = application.sSecureExportPath&'int'&'\word\';
    variables.sDLLPath = 'C:\Program Files (x86)\Open XML SDK\V2.0\lib\DocumentFormat.OpenXml.dll';

    variables.sFileName = "testI.docx";

    variables.sFileToWrite = variables.sExportDirectory&'#variables.sFileName#';

    variables.enumWordProcessingDocumentType = createObject("dotnet","DocumentFormat.OpenXml.WordprocessingDocumentType","#variables.sDLLPath#").init().Document;

    variables.oDocument = createObject("dotnet","DocumentFormat.OpenXml.Packaging.WordprocessingDocument","#variables.sDLLPath#").Create(variables.sFileToWrite,variables.enumWordProcessingDocumentType);

    variables.oMainDocument = variables.oDocument.AddMainDocumentPart();

    variables.oEncoding = createObject("dotnet","System.Text.UTF8Encoding").init();
    //variables.oMemoryStream = createObject("dotnet","System.IO.MemoryStream").init(variables.oEncoding.GetBytes(variables.sHTML));

    variables.enumAltChunk = createObject("dotnet","DocumentFormat.OpenXml.Packaging.AlternativeFormatImportPartType","#variables.sDLLPath#").html;

    variables.oFormatImportPart = variables.oMainDocument.AddAlternativeFormatImportPart(variables.enumAltChunk,variables.sAltChunkID);
    writeDump(variables.oFormatImportPart);

    variables.oFormatImportPart.FeedData(createObject("dotnet","System.IO.MemoryStream").init(variables.oEncoding.GetBytes(variables.sHTML)));
  } catch(Any e) {
    writeDump(e);
  }
</cfscript>

variables.oFormatImportPart的父方法为FeedData(System.IO.Stream),但是当我到达那一行时,Coldfusion会打击我,除了:

  

要么没有指定方法名称和参数类型的方法,要么FeedData方法超载了ColdFusion无法可靠解密的参数类型。 ColdFusion找到了0个与提供的参数匹配的方法。如果这是一个Java对象并且您验证了该方法存在,请使用javacast函数来减少歧义。

但正如您从我的转储中看到的那样,FeedData确实作为一种方法存在:

Coldfusion mocks me about the existance of a method

1 个答案:

答案 0 :(得分:0)

FeedData重载并期待Stream对象。您当前正在向它发送一个不明确的对象,因为在您的createObject调用之后它没有被强制转换为正确的类型。