确保从 xml 转换时存在值

本文关键字:存在 转换 xml 确保 | 更新日期: 2023-09-27 18:36:26

我有一个实用程序可以将xml文件转换为类对象:

    public static T CreateClassFromXml<T>(string fileName, string root) where T : class
    {
        fileName.ThrowNullOrEmpty("fileName");
        File.Exists(fileName).ThrowFalse(string.Format("File '{0}' could not be found", fileName));
        var serializer = new XmlSerializer(typeof(T), new XmlRootAttribute() { ElementName = root });
        using (var reader = XmlReader.Create(fileName))
        {
            return (T)serializer.Deserialize(reader);
        }
    }

该实用程序读取 xml 并创建一个类 T.使用上面的代码,除了围绕它编写包装类之外,我有什么方法可以验证创建的类吗?我需要确保为所有必填字段填充数据。

确保从 xml 转换时存在值

XmlSerializer 中没有内置的工具来执行此操作。你可以自己反思。由于 XmlSerializer 仅加载公共属性和字段,因此可以循环访问类的所有公共属性和字段,并确保它们都保存数据。您必须决定如何处理值类型(int,DateTime等),因为何时加载并不明显。您还必须以递归方式深入了解引用类型。

如果只需要将特定属性''字段标记为必需,则可以添加自己的属性并用它装饰类成员。在运行时,您将只处理设置了属性的属性。

简而言之,除非需要针对许多不同方案的通用机制,否则最好手动执行必须验证的属性。

相关文章: