我有一个.net 4类,它使用ReadOnly属性进行修饰。 我试图在.NET Compact 3.5项目中序列化这个类,但是我收到一个错误: “反映类型IpSettings时出现错误” 据我所知.NET CF不包含任何自定义属性,但我不需要序列化此属性。有没有办法跳过属性序列化? 谢谢, 亚历克斯
public class IpSettings
{
[ReadOnly(true)]
public string IP { get; set; }
public string Mask { get; set; }
public string Gateway { get; set; }
public string DNS1 { get; set; }
public string DNS2 { get; set; }
}
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(IpSettings));
答案 0 :(得分:0)
您可以通过.NET CF中的属性控制xml序列化。要使序列化系统忽略属性,可以使用XmlIgnore属性来装饰它:
public class IpSettings
{
[System.Xml.Serialization.XmlIgnore]
public string IP { get; set; }
public string Mask { get; set; }
public string Gateway { get; set; }
public string DNS1 { get; set; }
public string DNS2 { get; set; }
}
答案 1 :(得分:0)
我发现在尝试查看如何解决Compact Framework的问题时,我经常需要重新思考如何解决问题。
考虑类似下面的代码。它仍然允许您的字符串IP
值只读:
public class IpSettings
{
private string ip;
public IpSettings()
{
}
public IpSettings(string ipAddress)
{
ip = ipAddress;
}
public string IP { get { return ip; } }
public string Mask { get; set; }
public string Gateway { get; set; }
public string DNS1 { get; set; }
public string DNS2 { get; set; }
public static IpSettings Load() {
var ipSetting = new IpSettings();
// code to load your serialized settings
ipSettings.ip = // some value you just read
return ipSettings;
}
}
这将使您作为程序员在课堂上具有灵活性,同时仍然保留IP
字段的只读属性。