2011-06-10 92 views
1

我在嘗試將xml序列化到xml後遇到問題,因爲我將它從public更改爲internal。在我改變保護級別之前,它工作正常,所以我正在尋找一種方法來解決公共唯一的限制。內部類到xml的序列化

我希望它是內部的原因是我將該類移動到一個庫中,並且它在庫之外沒有用。

類佈局的一個簡單的例子:

[Serializable] 
internal class InternalSerializable 
{ 
    [XmlAttribute] 
    public int Foo = 5; 

    public InternalSerializable() 
    { 
    } 
} 

通常XmlSerializer自動生成和具有隨機組件的名字,所以我嘗試使用sgen.exe預先生成XmlSerializer的,並使用引用它:

[assembly: InternalsVisibleTo("FileFormats.XmlSerializers")] 

但當運行sgen與/verbose切換它說,只有公共類型可以處理。

所以我想知道如果有人知道如何欺騙sgen處理內部類型或以其他方式序列化內部類?

編輯:我有好幾個班,這個問題,所以我寧願不重寫整個事情

+0

[如何-可以-i的序列化內部類-使用-XmlSerializer的(可能重複http://stackoverflow.com/ questions/6156692/how-can-i-serialize-internal-classes-using-xmlserializer) – nawfal 2014-07-09 11:54:43

回答

0

的hackish,但你可以讓你的類公衆和EditorBrowsable屬性標記它從智能感知隱藏它。

[EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] 
[Serializable] 
public class InternalSerializable 

在C#,僅在編譯的程序EditorBrowsable工作:Hiding GetHashCode/Equals/ToString from fluent interface classes intellisense in Visual Studio for C#?

+0

謝謝。這個庫只用於內部使用,所以如果我找不到'正確的'方法,我可能會使用它,因爲它很容易,並且完成了我之後使用內部的方法。 – 2011-06-10 12:57:12