【求指教】NHibernate学习之Mapping with ConfORM出现的问题

最近在学习NHibernate,使用的资料是NHibernate 3.0 CookBook这本电子书。在Mapping with ConfORM这节中有个函数

View Code
1 private static string Serialize(HbmMapping hbmElement)
2 {
3 var setting = new XmlWriterSettings { Indent = true };
4 var serializer = new XmlSerializer(typeof(HbmMapping));
5 using (var memStream = new MemoryStream(2048))
6 using (var xmlWriter = XmlWriter.Create(memStream, setting))
7 {
8 serializer.Serialize(xmlWriter, hbmElement);
9 memStream.Flush();
10 memStream.Position = 0;
11 using (var sr = new StreamReader(memStream))
12 {
13 return sr.ReadToEnd();
14 }
15
16 }
17 }

在运行过程中出现的问题:



这是书中的代码,我觉得不会错可能是我在copy过程中出错,找了很久都没发现代码有问题。在尝试把using去掉后测试成功了:

View Code
1 private static string Serialize(HbmMapping hbmElement)
2 {
3 var setting = new XmlWriterSettings { Indent = true };
4 var serializer = new XmlSerializer(typeof(HbmMapping));
5 using (var memStream = new MemoryStream(2048))
6 using (var xmlWriter = XmlWriter.Create(memStream, setting))
7 {
8 serializer.Serialize(xmlWriter, hbmElement);
9 memStream.Flush();
10 memStream.Position = 0;
11 var sr = new StreamReader(memStream);
12 return sr.ReadToEnd();
13
14 }
15 }

using语句是在其代码块执行完毕后才释放资源的,在这貌似是已经先关闭sr的资源,然后访问sr.ReadToEnd()出错了。

求各位好汉指点啊~

posted @ 2011-06-14 16:50  Crazy炆、  阅读(294)  评论(1编辑  收藏  举报