2017-09-25 6 views
-3

クラスの先頭に[監査]というフラグを設定しています。これにより、オブジェクトの内容を監査目的でテキストに書き出すことができます。ただし、このクラスのプロパティの1つはISet Someクラスであり、このオブジェクトの内容は書き出されません。エラーは発生しません。ISetがシリアル化されていません。C#

[監査]は、次のようにステップを設定し、私はちょうど何か他のものはここに微調整する必要がある、またはISETの内容を書き出すことができないかどうかを疑問に思っている:

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

属性でクラスでありますシステムネームスペース。

+0

コードが適切ではありません。実際に監査を行うコードを表示してください。 – Amy

+0

クラスの上部に属性があります。それはすべてです。 – Andy5

+0

彼らはシリアライゼーションコードを見たいと思っています –

答えて

1

あなたはCollectionDataContractCriticalHelperのコード(見ればシリアライズとISet

の既知の問題は、あなたがあなたがISetが欠落しているが表示されます、次の

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; 
      } 
     } 

が表示されます)があります。マイクロソフトはこの問題を認識しているが、近い将来にそれを固定して計画されていません。あなたが貼り付けられた

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

+0

Davidに感謝します。明らかに、私は何をしようとしているのか理解しています。 – Andy5

関連する問題