没有BinaryFormatter 的C#对象到byte ?

BinaryFormatter工作得很好,但在.NET 4.5的Portable类库中不存在。

我已经读过它在.NET 4.6 Portable中。 我还没有确认这一点,因为当我在项目设置中更改为4.6时,我收到一条警告消息“4.5将自动定位”,除非我取消选择Silverlight,WindowsPhone,Windows Universal,Xamarin等),所以我只能目标.NET 4.6便携式,如果我不是针对其他平台,从而打败了目的。

这是我原来的BinarySerializer(Works但不是PCL因为使用了BinaryFormatter

 private string BinarySerialize(object Source) { byte[] serializedObject; using (MemoryStream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, Source); serializedObject = stream.ToArray(); } return Convert.ToBase64String(serializedObject); } 

那就是说,我开始尝试重新编写我的BinarySerializer以使用PCL中可用的BinaryReaderBinaryWriter ,并遇到以下问题:

BinaryWriter ,只能处理简单类型(如stringboolbytelongint等)和Streams ,所以我认为我需要找到一种方法将匿名对象转换为Stream

我在正确的道路上吗? 你如何转换直到运行时才知道的类型(如System.Delegate – 是的,我知道序列化委托生成脆弱的代码)或anonymouse \generics类型到它们的等效字节数组byte[] ? 有没有办法将对象直接转换为StreamMemoryStream

如果这根本不可能,你会怎么建议我为我的BinarySerializer编写一个interface ,所以我可以在我的可移植类库中实现这个function,而实现interface的实际BinaryFormatter类存在于特定于平台的程序集中?

仅供参考,这是一个MVVM项目,其中“Serializers”被认为是从ValueConverter抽象基类派生的模型。 序列化仅用于将实例化任务传输到其目标以供执行。