要被BinaryFormatter
成功系列化,您Tag
對象必須被標記爲[Serializable]
,這表明它可以成功序列化,並通過序列化的公共和私人領域反序列化。如果是如此顯着,那麼它將序列化爲一個TreeNode
的一部分,是由reference source圖所示:
[TypeConverterAttribute(typeof(TreeNodeConverter)), Serializable,
DefaultProperty("Text"),
SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly")]
public class TreeNode : MarshalByRefObject, ICloneable, ISerializable {
object userData;
protected virtual void Serialize(SerializationInfo si, StreamingContext context) {
// SNIP storage of irrelevant fields.
if (userData != null && userData.GetType().IsSerializable) {
si.AddValue("UserData", userData, userData.GetType());
}
}
public object Tag {
get {
return userData;
}
set {
userData = value;
}
}
}
需要注意的是,如果你的Tag
對象不序列化,它會悄無聲息跳過;不會拋出異常。
來源
2015-09-17 03:45:51
dbc
正是我所需要的。非常感謝,我希望這個問題能達到這裏預期的標準。爲了澄清,我所需要做的就是將我分配給標記的類標記爲[Serializable()],並將其繼承到Tag。 – PoTheCoder