如何确定类是否具有DataContract属性?

Ale*_*lex 14 c# serialization datacontract deserialization

我正在编写一个序列化函数,需要确定类是否具有DataContract属性.基本上,如果类具有DataContract属性,函数将使用DataContractSerializer,否则它将使用XmlSerializer.

谢谢你的帮助!

ale*_*dej 18

测试DataContractAttribute的最简单方法可能是:

bool f = Attribute.IsDefined(typeof(T), typeof(DataContractAttribute));
Run Code Online (Sandbox Code Playgroud)

也就是说,既然DC支持POCO序列化,它就不完整了.对DC可串行性的更完整测试将是:

bool f = true;
try {
    new DataContractSerializer(typeof(T));
}
catch (DataContractException) {
    f = false;
}
Run Code Online (Sandbox Code Playgroud)


Nag*_*agg 7

    bool hasDataContractAttribute = typeof(YourType)
         .GetCustomAttributes(typeof(DataContractAttribute), true).Any();
Run Code Online (Sandbox Code Playgroud)