我試圖確定爲什麼這種類型不是可序列化(由Type.IsSerializable()
測試)爲什麼這種類型不可序列化?
<Serializable()> _
Public MustInherit Class WellKnownInstanceCollectionWithTypedId(Of T As WellKnownInstanceWithTypedId(Of IdT), IdT)
Inherits ReadOnlyCollection(Of T)
Public Sub New(ByVal list As IList(Of T))
MyBase.New(list)
End Sub
Public Function GetById(ByVal id As IdT) As T
Return Me.FirstOrDefault(Function(item) item.Id.Equals(id))
End Function
End Class
我知道它是與我的GetById
功能,因爲如果我刪除一切都很好。有人能告訴我,我需要改變這種類型的可序列化嗎?
更新:
當我改變我的GetById
實現正因爲如此,一切都很好。顯然這與Linq有關(如下所示) - 任何人都可以給我進一步的細節,爲什麼這是這樣嗎?
Public Function GetById(ByVal id As IdT) As T
For Each i In Me
If i.Id.Equals(i) Then
Return i
End If
Next
Return Nothing
End Function
嘗試序列化它,它會拋出異常與更多細節 – Andrey 2010-07-18 18:34:47
我想確認它不是使用LINQ('FirstOrDefault'),而是使用閉包(函數'訪問本地變量,或在此情況下一個參數)。然而,我無法重現你的問題:'GetType(WellKnownInstanceCollectionWithTypedId(Of,))。IsSerializable'在你的原始定義中爲.NET 3.5返回'True'。 – 2010-07-19 00:10:12