【发布时间】:2012-02-05 09:25:27
【问题描述】:
我在 C# 中的序列化有一些问题 有代码:
public struct CoOrds
{
public double x, y, z;
public CoOrds(double p1, double p2, double p3)
{
x = p1;
y = p2;
z = p3;
}
}
public struct printColor
{
public int r, g, b;
public printColor(int p1, int p2, int p3)
{
r = p1;
g = p2;
b = p3;
}
}
[Serializable]
public abstract class shape : ISerializable
{
public int borderStyle=1;
/* ===============================COLOR PARAMETERS================================ */
public printColor colorRGB = new printColor(0, 0, 0);
public System.Drawing.Drawing2D.DashStyle styleLine { get; set; }
public int widht=2;
/*=================================FILL PARAMETERS=====================================*/
public printColor fillColorRGB = new printColor(255,255, 255);
public shape()
{
}
protected shape(SerializationInfo info, StreamingContext context)
{
colorRGB.r = info.GetInt32("colorLine.r");
colorRGB.g = info.GetInt32("colorLine.g");
colorRGB.b = info.GetInt32("colorLine.b");
borderStyle = info.GetInt32("borderStyle");
fillColorRGB.r = info.GetInt32("fillColorRGB.r");
fillColorRGB.g = info.GetInt32("fillColorRGB.g");
fillColorRGB.b = info.GetInt32("fillColorRGB.b");
widht = info.GetInt32("widht");
}
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("colorLine.r",colorRGB.r);
info.AddValue("colorLine.g", colorRGB.g);
info.AddValue("colorLine.b", colorRGB.b);
info.AddValue("borderStyle",borderStyle);
info.AddValue("fillColorRGB.r", fillColorRGB.r);
info.AddValue("fillColorRGB.g", fillColorRGB.g);
info.AddValue("fillColorRGB.b", fillColorRGB.b);
info.AddValue("widht", widht);
}
.....
1。我如何像
一样序列化结构[Serializable]
public struct CoOrds
在类下以及如何把它放在形状和GetObjectData,因为我有太多的类我必须使用这个结构
谢谢
【问题讨论】:
-
@user1137147:不太了解您的问题。如果将结构的 content 保存在二进制序列化中会怎样,就像使用
colorline.R一样? -
现在我只想了解可序列化
-
我可以像现在这样离开,但是我有太多的代码我必须做这个可序列化的,如果我能做得更容易,我会这样做
-
可变结构是邪恶的。除非绝对必要,否则尽量避免使用它们。
-
你有什么理由必须实现
ISerializable吗?structs 是否标记为[Serializable]?
标签: c# class struct serializable