.net 运行Excel DNA FSharp注册样本时出现异常
我正在尝试使用Excel DNA注册助手来帮助F Sharp。特别是,我对使用可选参数的示例感兴趣 我已经构建了示例项目(使用Visual Studio 2015),但是当我将生成的Xll加载到Excel 2010中时,我收到了错误 注册[Error]方法未注册,因为不支持签名:“Func`4.Invoke”:DnaMarshalException-未知数据类型:Microsoft.FSharp.Core.FSharpOption`1[System.Double] 在诊断窗口中,函数.net 运行Excel DNA FSharp注册样本时出现异常,.net,f#,excel-dna,.net,F#,Excel Dna,我正在尝试使用Excel DNA注册助手来帮助F Sharp。特别是,我对使用可选参数的示例感兴趣 我已经构建了示例项目(使用Visual Studio 2015),但是当我将生成的Xll加载到Excel 2010中时,我收到了错误 注册[Error]方法未注册,因为不支持签名:“Func`4.Invoke”:DnaMarshalException-未知数据类型:Microsoft.FSharp.Core.FSharpOption`1[System.Double] 在诊断窗口中,函数dnaFSh
dnaFSharpOptional
在Excel中不可用。这就好像参数转换FsParameterConversions.FsOptionalParameterConversion
未被应用或未按预期工作
有没有关于错误来源的想法,以及如何修复它
注意
问题似乎是将筛选器应用于参数转换
FsParameterConversions.FsOptionalParameterConversion
,其中它仅与类型为obj
(即System.Object
)的参数匹配
我的修复/解决方法是修改FsAsync.Addin.AutoOpen
方法,调用ParameterConversionConfiguration.AddParameterConversion
的不同重载,将null
传递给第二个参数。这将强制转换与所有参数匹配,而不考虑类型
奇怪的是,在调用此重载时,我还必须显式地将参数转换对象转换为委托类型,以便对其进行编译(不确定原因)
将ExampleAddIn.fs的第10-11行更改为:
let paramConvertConfig = ParameterConversionConfiguration()
.AddParameterConversion(FsParameterConversions.FsOptionalParameterConversion)
致:
let paramConvertConfig=ParameterConversionConfiguration()
.AddParameterConversion(
新职能(
FsParameterConversions.FsOptionalParameterConversion),
null)//null强制对所有参数进行参数转换
我创建了一个问题来跟踪此错误:
let paramConvertConfig = ParameterConversionConfiguration()
.AddParameterConversion(
new Func<Type, ExcelParameterRegistration, LambdaExpression>(
FsParameterConversions.FsOptionalParameterConversion),
null) // null forces the parameter conversion to be tried against all params