0

我有一个将 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。使用上面的代码,除了在它周围编写一个包装类之外,还有什么方法可以验证创建的类?我需要确保为所有必填字段填充数据。

4

1 回答 1

0

XmlSerializer 中没有内置工具来执行此操作。你可以通过反思自己做。由于 XmlSerializer 仅加载公共属性和字段,因此您可以遍历类的所有公共属性和字段并确保它们都保存数据。您必须决定如何处理值类型(int、DateTime 等...),因为加载与否的时间并不明显。您还必须递归地深入研究引用类型。

如果您只需要将特定属性\字段标记为必填项,则可以添加自己的属性并用它来装饰类成员。在运行时,您将只处理具有属性集的属性。

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

于 2013-10-21T15:23:23.770 回答