c# stream流转object
时间: 2024-09-11 07:18:24 浏览: 71
在C#中,流(Stream)是一个抽象的数据流接口,用于读写字节数据。将Stream转换为对象通常涉及反序列化过程,这意味着你将字节数据转换成.NET对象。这个过程可以通过不同的反序列化技术实现,例如使用`BinaryFormatter`、`SoapFormatter`、`XmlSerializer`或`DataContractSerializer`等。下面是一个使用`BinaryFormatter`的例子:
```csharp
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public static T DeserializeObject<T>(Stream stream)
{
IFormatter formatter = new BinaryFormatter();
return (T)formatter.Deserialize(stream);
}
// 使用示例
Stream stream = ... // 这里应该是流的来源,比如文件、网络等
Person person = DeserializeObject<Person>(stream);
```
在上述代码中,`Person`类需要被标记为`[Serializable]`,因为它将被序列化和反序列化。`DeserializeObject`方法接受一个`Stream`对象,并使用`BinaryFormatter`将数据反序列化为指定类型的对象。
其他序列化技术,比如`XmlSerializer`,允许你将对象序列化为XML格式,也可以用于将Stream转换为对象,适用于不同的场景和需求。
阅读全文