如何检测有问题的 DataContract 类?

问题描述 投票:0回答:1

是否可以检测以下情况(使用编译器警告或使用外部工具):

public class SomeItem
 {
     public string ValueOne { get; set; }
     public string ValueTwo { get; set; }
 }

[DataContract]
 public class Response
 {        
     [DataMember]
     public List<SomeItem> Items { get; set; } //A desirable warning: SomeItem is NOT a DataContract, SomeItem has no member with the DataMember attribute.
 }

问题是这段代码可以在没有错误或警告的情况下编译,但它不能正常工作:项目将始终为空。

c# serialization datacontract
1个回答
0
投票

你是对的,构建没有检测到这些问题。为什么?因为它会极大地影响构建性能。

可以采用哪些方法?我可以看到两个:

  1. 静态分析。我所说的“静态”是指使用反射检查程序集而不重新构建它们。可以针对对象图的根执行分析。收集所有类型和成员,在每个类型中创建与其他类型的使用相关的关联,然后找出数据契约中包含的所有成员。然后寻找可能存在的不一致之处,如您所显示的那样。这是一个完全可以解决的问题,但是对于单个问题来说代码太大了。如果您对某些特定的不一致有疑问,我很可能可以回答并构建一个代码示例来检测它们,但我不会花那么多时间来创建整个实用程序。

  2. 测试。 :-(
© www.soinside.com 2019 - 2024. All rights reserved.