我有以下结构:
public struct Declarations
{
public const string SchemaVersion = "urn:ean.ucc:gdsn:2";
}
SchemaVersion被一些试图像这样序列化的XmlElements使用:
[XmlElement(Type=typeof(SomeGarbage),ElementName="moreJunk",IsNullable=false,Form=XmlSchemaForm.Unqualified,Namespace=Declarations.SchemaVersion)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
public SomeType __someMember;
当我尝试在我的dll上运行sgen.exe时出现以下错误:
错误1反映类型'BigHammer.CINParser.Messages.Declarations'时出现错误 错误2命令“”C:\ Program Files(x86)\ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin \ sgen.exe“/ force”C:\ Users \ mstoddard \ teamserver_source \ GDSN \ CINParser \ CINParser \斌\调试\ BigHammer.CINParser.dll” “退出代码1。
我试过让结构成为一个类,没有帮助 我尝试添加默认构造函数,没有帮助
思想?
===更新===
看起来Visual Studio隐藏了一些信息,我在两个不同的CLR命名空间中定义了相同的类,但没有XML命名空间:
错误:反映类型为“BigHammer.CINParser.Messages.Declarations”的错误。 - 类型'BigHammer.CINParser.Messages.Declarations'和'BigHammer.CINParser.Messages.urn_ean_ucc_2.Declarations'都使用来自命名空间''的XML类型名称'Declarations'。使用XML属性为类型指定唯一的XML名称和/或命名空间。
答案 0 :(得分:2)
序列化仅适用于实例数据。
Static / Const是绑定到类的数据。
例如,在给定的应用程序域中,Declarations.SchemaVersion只能是单个值。因此没有要序列化的实例数据。
答案 1 :(得分:0)
Xml序列化程序仅序列化属性。
包装您的变量。
class Cro
{
public Cro
{
_atia="my const value";
}
private string _atia; // won't be serialized
public string Atia // will be serialized
{
get
{
return _atia;
}
}
}