asp.net trap: 'same' types in different assemblies are not same! # 实际上,如果你在页面上显示一下container.dataitem.gettype().assemblyqualifiedname和typeof(myinfo).assemblyqualifiedname就发现问题了。原来存在cache中的对象还是原来的那个assembly中的类型,而再次数据绑定时你将它转换为的myinfo是在新的assembly中的类型!虽然类型的全称是相同的,但是由于它来自于两个不同identity的assembly,因此clr并不认为他们是同样的类型。而当使用code-behind的时候,你的自定义类型所在的assembly并不会随着.aspx文件的修改而变化,因此cache中存的对象和你将要转换的对象也是一致的。这就是所谓的强类型系统喽(相对而言的有些弱类型系统可能只是通过比对类型的文本相等就认定类型相等)。