首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PCL中的TypeDescriptor替换

PCL中的TypeDescriptor替换
EN

Stack Overflow用户
提问于 2016-09-19 18:39:18
回答 3查看 369关注 0票数 1

TypeDescriptor.GetConverter(Type)是序列化/反序列化大量内置字符串数据类型的a very convientent way

代码语言:javascript
复制
object original = ...;

string serialized = TypeDescriptor.GetConverter(t).ConvertToInvariantString(original);
object deserialized = TypeDescriptor.GetConverter(t).ConvertFromInvariantString(serialized);

不幸的是,TypeDescriptor在可移植的类库中不可用。

有没有一个规范的替代品,或者我们必须回到巨大的switch语句?

EN

回答 3

Stack Overflow用户

发布于 2016-10-05 23:55:58

TypeDescriptor在PCL中不可用,但在使用PCL的实际客户端上可能可用。

这是我用来从Xamarin Android项目注入Mono TypeDescriptor的变通方法:

PCL:

代码语言:javascript
复制
public interface IPclWorkaround
{
    ConvertFromInvariantString(Type type, string s);
}

Xamarin Android:

代码语言:javascript
复制
[assembly: Dependency(typeof(PclWorkaround))]

class PclWorkaround : IPclWorkaround
{
    public object ConvertFromInvariantString(Type type, string s)
    {
        return TypeDescriptor.GetConverter(type).ConvertFromInvariantString(s);
    }
}

PCL中的用法:

代码语言:javascript
复制
var myObject = DependencyService.Get<IPclWorkaround>.ConvertFromInvariantString(type, myString);
票数 2
EN

Stack Overflow用户

发布于 2017-07-31 09:17:59

FWIW,幸运的是.NET标准2.0中的this is covered

.Net标准1.4已经可以使用XF (Xamarin Forms)访问。希望真的很快(vNext),随着2.0Mono的正式发布,依次是XF.iOS,XF.Droid,XF.Mac和UWP,也会加入这个派对,所有那些缺失的API都将在XF中可用,如this表中所示。

票数 2
EN

Stack Overflow用户

发布于 2016-09-19 18:43:50

您不能在PCL项目中使用TypeDescriptor,因为它不是作为PCL构建的,也不是跨平台的。TypeDescriptor在PCL项目中不可用,并且未列出here

以下程序集在可移植类库项目中可用:

·mscorlib.dll

·System.dll

·System.Core.dll

·System.Xml.dll

·System.ComponentModel.Composition.dll

·System.Net.dll

·System.Runtime.Serialization.dll

·System.ServiceModel.dll

·System.Xml.Serialization.dll

·System.Windows.dll (from Silverlight)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39571152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档