如何将字符串从XML序列化为Regex类型的类属性?

这是XML文件中的元素:

  <IncludeRegex><![CDATA[#include\\s*\\\"\\s*(?<FileName>.+\\\\*\\.*.+)\\s*\\\"]]></IncludeRegex>
  <IncludeDefineRegex><![CDATA[#define\s*[A-Za-z_0-9]+\s*\""\s*(?<FileName>.+\.[a-zA-Z0-9]+)\s*\""]]></IncludeDefineRegex>

在我进行序列化的类(class)中,我具有以下属性:
public Regex IncludeRegex { get; set; }
public Regex IncludeDefineRegex { get; set; }

该类的其余部分可以毫无问题地进行序列化,但是Regex属性无法序列化。一种选择是拥有替代属性:
public string IncludeRegex { get; set; }
public string IncludeDefineRegex { get; set; }
[XmlIgnore]
public Regex IncludeRegexActual { get; private set; }

[XmlIgnore]
public Regex IncludeDefineRegexActual { get; private set; }

并在IncludeRegex和IncludeDefineRegex的设置程序中或在init函数中设置这些属性。这行得通,但是如果没有重复的属性,我可以这样做吗?

最佳答案

我不认为您可以使用常规XML序列化来做到这一点,您必须实现IXmlSerializable来直接控制序列化。

关于c# - 如何使用.NET XML序列化序列化正则表达式类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6205575/

10-11 22:43
查看更多