Если вы знаете, что у вас есть разработчики интерфейса, достаточно простой хак, который вы можете использовать, чтобы получить тип интерфейса для сериализации без написания кода разбора:
public interface IInterface {} public class KnownImplementor01: IInterface {} public class KnownImplementor02: IInterface {} public class KnownImplementor03: IInterface {} public class ToSerialize {[XmlIgnore] public IInterface InterfaceProperty {get; задавать; } [XmlArray («интерфейс»)] [XmlArrayItem («ofTypeKnownImplementor01», typeof (KnownImplementor01)] [XmlArrayItem («ofTypeKnownImplementor02», typeof (KnownImplementor02)] [XmlArrayItem («ofTypeKnownImplementor03», typeof (KnownImplementor03)] public object [] InterfacePropertySerialization {get {return new [] {InterfaceProperty}} set {InterfaceProperty = (IInterface) value.Single ();}}}
Получившийся xml должен выглядеть примерно так:
& lt; interface & gt; & lt; ofTypeKnownImplementor01 & gt; & lt;! - etc ... - & gt;
PCRE не поддерживает синтаксис \uXXXX
. Вместо этого используйте \x{XXXX}
. См. здесь .
Ваш диапазон \u2e80-\u9fff
также эквивалентен
\p{InCJK_Radicals_Supplement}\p{InKangxi_Radicals}\p{InIdeographic_Description_Characters}\p{InCJK_Symbols_and_Punctuation}\p{InHiragana}\p{InKatakana}\p{InBopomofo}\p{InHangul_Compatibility_Jamo}\p{InKanbun}\p{InBopomofo_Extended}\p{InKatakana_Phonetic_Extensions}\p{InEnclosed_CJK_Letters_and_Months}\p{InCJK_Compatibility}\p{InCJK_Unified_Ideographs_Extension_A}\p{InYijing_Hexagram_Symbols}\p{InCJK_Unified_Ideographs}
Не забудьте добавить u
(/regex here/u
), если вы имеете дело с UTF-8. Если вы имеете дело с другой многобайтовой кодировкой, вы должны сначала преобразовать в UTF-8.