在ASP.NET中使用自定义类型作为哈希表的值时,需要将其序列化和反序列化以便在不同的应用程序之间传输和存储数据。以下是一个示例:
定义自定义类型:
public class Person { public string FullName { get; set; } public int Age { get; set; } }
创建哈希表:
Hashtable ht = new Hashtable(); ht.Add("John", new Person { FullName = "John Smith", Age = 25 }); ht.Add("Mary", new Person { FullName = "Mary Johnson", Age = 30 }); ht.Add("Bob", new Person { FullName = "Bob Williams", Age = 40 });
使用BinaryFormatter进行序列化:
using System.IO; using System.Runtime.Serialization.Formatters.Binary;
MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, ht); byte[] serializedData = stream.ToArray();
使用BinaryFormatter进行反序列化:
MemoryStream stream = new MemoryStream(serializedData); BinaryFormatter formatter = new BinaryFormatter(); Hashtable deserializedHT = (Hashtable)formatter.Deserialize(stream);
foreach (DictionaryEntry entry in deserializedHT) { string key = (string)entry.Key; Person value = (Person)entry.Value; Console.WriteLine("{0}: {1}, {2} years old", key, value.FullName, value.Age); }
注意:使用BinaryFormatter进行序列化和反序列化会将对象转换为二进制,并可能不适用于所有情况,因此建议使用其他序列化方法,如JSON或XML。