我有一个可移植的F#库,目标是Silverlight 5和.Net 4.5(特定的配置文件47)。我尝试使用FSharpType
中的FSharpValue
和Microsoft.FSharp.Reflection
来处理来自另一个可移植库的联合和记录类型的序列化,尽管这个是在C#中并且针对相同的便携式轮廓。但是,从我的Silverlight应用程序中访问这些API会给我一个MethodAccessException
,其调用堆栈的顶部位于下方。我试图确定是否可以从Silverlight 5.0应用程序访问这些F#反射API。
System.MethodAccessException occurred
HResult=-2146233072
Message=Attempt to access method Microsoft.FSharp.Core.CompilationMappingAttribute..ctor(Microsoft.FSharp.Core.SourceConstructFlags) in violation of security transparency rules failed.
Source=mscorlib
StackTrace:
at System.RuntimeMethodHandle.CheckLinktimeDemands(IRuntimeMethodInfo method, RuntimeModule module, Boolean isDecoratedTargetSecurityTransparent)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
at System.RuntimeType.GetCustomAttributes(Boolean inherit)
(编辑)我使用Microsoft.FSharp.Reflection
中的元素并传递BindingFlags.Public
;因此,没有任何尝试应该限制的事情,比如访问私人会员。