C#-XML仅将复杂类序列化为其基元类型
是否可以采用一个复杂的类“a”,它表示一个带有附加信息的基元类型(例如该基元的有效值),在“B”中包含一个“a”的实例,并用XML序列化“B”,其中“a”仅作为其基元类型出现C#-XML仅将复杂类序列化为其基元类型,c#,xml-serialization,C#,Xml Serialization,是否可以采用一个复杂的类“a”,它表示一个带有附加信息的基元类型(例如该基元的有效值),在“B”中包含一个“a”的实例,并用XML序列化“B”,其中“a”仅作为其基元类型出现 Class A<T> { T obj; Static ValidValue<T>[] validValues; } Class B { A<int> intVal; A<string> stringVal; } A类{ T-obj; 静态有效值[]有效值
Class A<T> {
T obj;
Static ValidValue<T>[] validValues;
}
Class B {
A<int> intVal;
A<string> stringVal;
}
A类{
T-obj;
静态有效值[]有效值;
}
B类{
一个intVal;
斯特林瓦尔;
}
所需的输出只是原语。有效值将用于在反序列化后验证数据:
<B>
<A>1</A>
<A>example</A>
</B>
1.
例子
您是否尝试使用该属性
public class B {
private A<int> intVal;
public int IntVal{
get{
return intVal.obj;
}
set{
intVal.obj = value;
}
}
// same for stringval
}
公共B类{
私人旅行社;
公共int IntVal{
得到{
返回intVal.obj;
}
设置{
intVal.obj=值;
}
}
//stringval也一样
}
据我所知,xmlserializer只会序列化公共属性。所以它应该会起作用
不过,我可能误解了您的要求。您可以使用自定义序列化来控制序列化的变量。然后可以向序列化对象发送任何想要的值 请参见这很容易处理 您只需要在类上放置一个
[DataContract]
属性,然后仅修饰要用[DataMember]
属性序列化的字段或属性。您可以用这种方式序列化私有字段
这是选择性加入,即只有您用[DataMember]
装饰的项目才会被序列化
例如():
这会奏效的。但是,我想封装这个行为,这样我就不需要为类中的每个变量都提供属性和字段。不过,我不确定自动映射。我没试过。对我来说,最简单的设计是最好的,这是最经济的事情。谢谢你的意见。问题是关于xml序列化的
[DataContract]
public class Person
{
// This member is serialized.
[DataMember]
internal string FullName;
// This is serialized even though it is private.
[DataMember]
private int Age;
// This is not serialized because the DataMemberAttribute
// has not been applied.
private string MailingAddress;
// This is not serialized, but the property is.
private string telephoneNumberValue;
[DataMember]
public string TelephoneNumber
{
get { return telephoneNumberValue; }
set { telephoneNumberValue = value; }
}
}