我的服务器(IIS,ASP.NET)接收来自基于不同平台(UWP,Windows Phone 8.1,Xamarin.Android,Xamarin.iOS)的客户端的请求,并且这些客户端处理来自我的服务器的响应。
当我在我的服务器上处理一个请求或者在客户端上处理一个响应时,我会处理以下数据:
为了反序列化我用来执行以下操作的数据:
Type valueType = Type.GetType(iValue.assemblyQualifiedName, true); object value = <deserializing value using its valueType>
在服务器端和客户端都能正常工作,直到我开始处理使用.NET本地工具链编译的UWP客户端。
问题是基本types,如System.String用于驻留在mscorlib程序集,但在新的UWP客户端stringValue.GetType().AssemblyQualifiedName
返回类似
System.String,System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a
这导致我的服务器上出现以下exception:
无法加载文件或程序集“System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其某个依赖项。 该系统找不到指定的文件。
在Type.GetType(iValue.assemblyQualifiedName, true)
。
如果我得到了正确的结果,我可以使用Type.FullName的Type.GetType方法,而不是Type.AssemblyQualifiedName在Mscorlib程序集中定义的types。
但是我的代码在所有的客户端和服务器(PCL)之间是统一的。 如果在UWP客户端的System.Private.CoreLib程序集中定义了一个types,该怎么办? 我该如何更好地处理这个问题呢?