2017-09-25 45 views
-3

我有一個類,在它的頂部,我已經設置了標誌[Audit],然後這允許將對象的內容寫入文本以用於審計目的。但是,此類的其中一個屬性是ISet Some類,並且此對象的內容未被寫出。它不會拋出錯誤。ISet沒有被序列化C#

的[審計]設置升壓如下,我只是想知道別的東西是否需要調整了這裏,或者不能ISet的內容寫出來:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, Inherited = true] 
    public sealed class Audit:Attribute 
    {} 

屬性是類系統命名空間。

+0

您粘貼的代碼是不相關的。向我們展示實際執行審計的代碼。 – Amy

+0

您在課程頂部有屬性。這就是所需要的全部 – Andy5

+0

他們希望看到序列號代碼 –

回答

1

有一個已知的問題系列化和ISet

,如果你看一下代碼CollectionDataContractCriticalHelper(),你會看到下面的

internal static Type[] KnownInterfaces 
     { 
      get 
      { 
       if (_knownInterfaces == null) 
       { 
        // Listed in priority order 
        _knownInterfaces = new Type[] 
       { 
        Globals.TypeOfIDictionaryGeneric, 
        Globals.TypeOfIDictionary, 
        Globals.TypeOfIListGeneric, 
        Globals.TypeOfICollectionGeneric, 
        Globals.TypeOfIList, 
        Globals.TypeOfIEnumerableGeneric, 
        Globals.TypeOfICollection, 
        Globals.TypeOfIEnumerable 
       }; 
       } 
       return _knownInterfaces; 
      } 
     } 

你會看到ISet丟失。微軟意識到這個問題,但它在不久的將來固定不打算:

DataContractSerializer cannot serialize System.Collections.Generic.ISet even if it derives from IEnumerable

+0

謝謝大衛。顯然你明白我在做什麼 – Andy5

相關問題