Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在对象中表示此XML? C:\上传 C:\下载_.net_Xml_Xml Serialization - Fatal编程技术网

.net 如何在对象中表示此XML? C:\上传 C:\下载

.net 如何在对象中表示此XML? C:\上传 C:\下载,.net,xml,xml-serialization,.net,Xml,Xml Serialization,我想将这个XML反序列化为一个FileTransferSettings对象,它有两个属性——UploadPath和DownloadPath。但是我还想为每个属性保留src属性,以便代码可以对其进行查询 我认为创建关联的UploadPathSrc和DownloadPathSrc属性有点笨拙和麻烦 在.NET中是否有其他方法来表示这一点?对我来说,src属性似乎应该被视为元数据。这方面有最佳实践吗 (有关我为什么尝试这样做的背景信息,请参阅我的) 谢谢。您可以创建第二个类FileTransferPa

我想将这个XML反序列化为一个FileTransferSettings对象,它有两个属性——UploadPath和DownloadPath。但是我还想为每个属性保留
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:根据您的需要,您可以包含某种可序列化的字典等价物(键/值对)来存储其他信息。