Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用来自F的UWP应用程序服务#_C#_.net_F#_Win Universal App_Uwp - Fatal编程技术网

C# 使用来自F的UWP应用程序服务#

C# 使用来自F的UWP应用程序服务#,c#,.net,f#,win-universal-app,uwp,C#,.net,F#,Win Universal App,Uwp,我不得不在C#中创建一个通用Windows平台(UWP)应用程序服务提供商,因为我想要使用的库只能从UWP应用程序中获得 但是,我需要在F#中编写一个(控制台)应用程序,然后调用上述UWP服务提供商来利用库 根据这一点,如果服务提供者和消费者都是使用UWP编写C#的(因为UWP中还不支持F#) 我的问题是,我是否可以从F项目中调用用C语言编写的UWP应用程序服务?我可以用两个项目创建一个解决方案吗?一个是UWP C#app服务提供商,另一个是F#console app服务消费者?这是我在上面链接

我不得不在C#中创建一个通用Windows平台(UWP)应用程序服务提供商,因为我想要使用的库只能从UWP应用程序中获得

但是,我需要在F#中编写一个(控制台)应用程序,然后调用上述UWP服务提供商来利用库

根据这一点,如果服务提供者和消费者都是使用UWP编写C#的(因为UWP中还不支持F#)


我的问题是,我是否可以从F项目中调用用C语言编写的UWP应用程序服务?我可以用两个项目创建一个解决方案吗?一个是UWP C#app服务提供商,另一个是F#console app服务消费者?

这是我在上面链接的另一篇文章中的代码的改进版本,它还将WinRT异步对象映射到F#
异步,这使得与某些类型的人一起工作更加愉快

开放系统。反射
类型异步器()=
静态设置winrtExts=System.Type.GetType(“System.WindowsRuntimeSystemExtensions,System.Runtime.WindowsRuntime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”)
静态让asTask=winrtExts.GetMethods()|>Seq.find(乐趣m->m.Name=“asTask”&&m.IsGenericMethodDefinition&&m.GetGenericArguments().Length=1&&m.ReturnType.IsGenericType)
静态成员FromTask(t:System.Threading.Tasks.Task=
typeof.GetMethod(“FromTask”).MakeGenericMethod(argTy,typeof args
其他的
有趣的arg->arg::args
Reflection.FSharpValue.MakeFunction(ty,fun o->build rng(mkArgs o))
其他的
让rcvr、ty、旗帜=
匹配
|:?System.Type为ty->null,ty,BindingFlags.Static
|->o,o.GetType(),BindingFlags.Instance
让flags=flags | | | BindingFlags.Public
让冰毒=
如果Reflection.FSharpType.IsFunction typeof
let(| GenericTypeInstance | |)(genTy:System.Type)(ty:System.Type)=
如果ty.IsGenericType&&ty.GetGenericTypeDefinition()=genTy,则某些(ty.GetGenericArguments())
没有别的
设asyncy=typedefof
匹配meth.ReturnType,结果为
|GenericTypeInstance IAsyncOperation[| winRtTy |],GenericTypeInstance Asyncy[| returnTy |]->
//展开到F#异步
typeof.GetMethod(“FromIAsyncObjThrough”).MakeGenericMethod(returnTy).Invoke(null,[| winRtTy;result |])
|->结果

build typeof“因为我想使用的库只能从UWP应用程序中使用”=>必须是世界第一:)@Bart Windows.Media.Ocr()是世界第一,根据我的理解——“库只能与Windows Phone和Windows Store应用程序一起使用,这是一个很强的限制。”@有一个云API供您使用:谢谢Bart,但云不是一个选项,OCR应该驻留在客户端,而Microsoft.Media.OCR需要专门使用,这些选项没有太大的余地。请参阅谢谢@kvb,它看起来很棒:-)将在周末检查@kvb我还需要指定功能吗?当我做某些事情时,比如试图检索蓝牙设备引用时,该程序往往会挂起。如果你是从桌面应用程序(如F#Interactive)运行,那么我认为这不适用。也许发布一个新的问题,用一个简化的复制?