.net 如何在对象中表示此XML? C:\上传 C:\下载
我想将这个XML反序列化为一个FileTransferSettings对象,它有两个属性——UploadPath和DownloadPath。但是我还想为每个属性保留.net 如何在对象中表示此XML? C:\上传 C:\下载,.net,xml,xml-serialization,.net,Xml,Xml Serialization,我想将这个XML反序列化为一个FileTransferSettings对象,它有两个属性——UploadPath和DownloadPath。但是我还想为每个属性保留src属性,以便代码可以对其进行查询 我认为创建关联的UploadPathSrc和DownloadPathSrc属性有点笨拙和麻烦 在.NET中是否有其他方法来表示这一点?对我来说,src属性似乎应该被视为元数据。这方面有最佳实践吗 (有关我为什么尝试这样做的背景信息,请参阅我的) 谢谢。您可以创建第二个类FileTransferPa
src
属性,以便代码可以对其进行查询
我认为创建关联的UploadPathSrc和DownloadPathSrc属性有点笨拙和麻烦
在.NET中是否有其他方法来表示这一点?对我来说,src
属性似乎应该被视为元数据。这方面有最佳实践吗
(有关我为什么尝试这样做的背景信息,请参阅我的)
谢谢。您可以创建第二个类FileTransferPath,它有一个字符串值“Path”和一个枚举值“Source” 然后你可以使用像这样的代码
class FileTransferSettings
{
public FileTransferPath UploadPath { get; set; }
public FileTransferPath DownloadPath { get; set; }
// ...
}
class FileTransferPath
{
public string Path { get; set; }
public FileTransferSource Source { get; set}
public enum FileTransferSource
{
None,
User,
Application,
// ...
}
}
您可以为类属性选择更好的名称;我不知道我喜欢重复的路径obj.Upload.Path
或者其他更好的方法
请注意,您无法直接将其序列化/反序列化到使用XmlSerialization的格式;但它确实完成了你所需要的。(您仍然可以序列化为XML,只需做更多的工作)您可以创建第二个类FileTransferPath,它有一个字符串值“Path”和一个枚举值“Source” 然后你可以使用像这样的代码
class FileTransferSettings
{
public FileTransferPath UploadPath { get; set; }
public FileTransferPath DownloadPath { get; set; }
// ...
}
class FileTransferPath
{
public string Path { get; set; }
public FileTransferSource Source { get; set}
public enum FileTransferSource
{
None,
User,
Application,
// ...
}
}
您可以为类属性选择更好的名称;我不知道我喜欢重复的路径obj.Upload.Path
或者其他更好的方法
请注意,您无法直接将其序列化/反序列化到使用XmlSerialization的格式;但它确实完成了你所需要的。(您仍然可以序列化为XML,只需做更多的工作)来扩展Daniel L
obj.UploadPath.Path;
obj.UploadPath.Source;
来扩展Daniel L
obj.UploadPath.Path;
obj.UploadPath.Source;
为了正确地序列化和反序列化XML,您需要用XML序列化属性修饰类
public Class FileTransferPath
{
public Enum SourceEnum { User, App }
public SourceEnum Source { get; set; } //Automatic properties in 3.5 Syntax
public string FilePath { get; set; }
}
public Class FileTransferSettings
{
public FileTransferPath UploadPath { get; set; }
public FileTransferPath DownLoadPath { get; set; }
}
[XmlRoot(“文件传输设置”)]
公共类FileTransferSettings
{
[XmlElement(“下载路径”)]
公共下载路径下载路径{get;set;}
// ...
}
[XmlType(“下载路径”)]
公共类下载路径
{
[XmlAttribute]
公共字符串Src;//或使用枚举等
[XmlText]
公共字符串文本;
}
//序列化的XML看起来像
文本
....
为了正确地序列化和反序列化XML,您需要用XML序列化属性修饰类
public Class FileTransferPath
{
public Enum SourceEnum { User, App }
public SourceEnum Source { get; set; } //Automatic properties in 3.5 Syntax
public string FilePath { get; set; }
}
public Class FileTransferSettings
{
public FileTransferPath UploadPath { get; set; }
public FileTransferPath DownLoadPath { get; set; }
}
[XmlRoot(“文件传输设置”)]
公共类FileTransferSettings
{
[XmlElement(“下载路径”)]
公共下载路径下载路径{get;set;}
// ...
}
[XmlType(“下载路径”)]
公共类下载路径
{
[XmlAttribute]
公共字符串Src;//或使用枚举等
[XmlText]
公共字符串文本;
}
//序列化的XML看起来像
文本
....
在您之前关于src属性的问题上有答案。在您之前关于src属性的问题上有答案。Nice,+1表示XML序列化Nice,+1对于XML序列化,您不必将SourceEnum类型公开吗?您不必将SourceEnum类型公开吗?我想我最终会采用这种方法。我看到的唯一问题是,如果一个部分有20个设置,但它们都不适合FileTransferPath,那么我可能最终导致类爆炸。不过,谢谢您,这会起作用。@vg1890:嗯,根据您的需要,您可以包括某种可序列化的字典等价物(键/值对)来存储其他信息。我想我最终会采用这种方法。我看到的唯一问题是,如果一个部分有20个设置,但它们都不适合FileTransferPath,那么我可能最终导致类爆炸。不过,谢谢您,这会起作用。@vg1890:根据您的需要,您可以包含某种可序列化的字典等价物(键/值对)来存储其他信息。