CAcroPDDoc pdDoc = (CAcroPDDoc)g_AVDoc.GetPDDoc(); Object jsObj = pdDoc.GetJSObject(); object[] getTemplateParam = { "Templates:1" }; Type T = jsObj.GetType(); template = T.InvokeMember( "getTemplate", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance, null, jsObj, getTemplateParam);
如上所示
jsObj中存在getTemplate这个方法,用上面的方式调用是没有问题的.
但是我想使用dynamic调用却提示值不在范围.
CAcroPDDoc pdDoc = (CAcroPDDoc)g_AVDoc.GetPDDoc(); dynamic jsObj = pdDoc.GetJSObject(); object[] getTemplateParam = { "Templates:1" }; template =jsObj .getTemplate(getTemplateParam );
不解中,求解
以下代码引用自http://msdn.microsoft.com/zh-cn/magazine/gg598922.aspx
该函数返回一个计算器,但系统在编译时不知道此计算器对象的精确类型。 代码所依赖的唯一事情是此对象应具有 Add 方法。 请注意,此方法无法使用 IntelliSense,因为您以字符串文本的形式提供了方法名称。
使用 dynamic 关键字,代码就很简单了:
错误的全部信息贴出来看看
@曾先锋: 看一下错误详细信息,同时看看
CAcroPDDoc pdDoc = (CAcroPDDoc)g_AVDoc.GetPDDoc();是不是只有一个,
pdDoc.GetJSObject();是否只给一个变量赋值