有没有人见过测试WCF DataContracts的库?问这个问题的动机是我刚刚在我的应用程序中发现了一个错误,该错误是由于我没有使用DataMember属性注释属性 - 因此,该属性未被序列化.
我想到的是一个API,在给定特定类型的DataContract的情况下,它会自动使用随机数据填充其成员,包括任何子DataContracts,然后通过其中一个WCF Serializers/Formatters对其进行序列化,然后检查所有数据已被传播.
任何人?
Dre*_*kes 11
它很简单,可以DataContractSerializer用来将对象MemoryStream序列化为a ,然后将其反序列化为新实例.
这是一个演示此往返序列化的类:
public static class WcfTestHelper
{
/// <summary>
/// Uses a <see cref="DataContractSerializer"/> to serialise the object into
/// memory, then deserialise it again and return the result. This is useful
/// in tests to validate that your object is serialisable, and that it
/// serialises correctly.
/// </summary>
public static T DataContractSerializationRoundTrip<T>(T obj)
{
return DataContractSerializationRoundTrip(obj, null);
}
/// <summary>
/// Uses a <see cref="DataContractSerializer"/> to serialise the object into
/// memory, then deserialise it again and return the result. This is useful
/// in tests to validate that your object is serialisable, and that it
/// serialises correctly.
/// </summary>
public static T DataContractSerializationRoundTrip<T>(T obj,
IEnumerable<Type> knownTypes)
{
var serializer = new DataContractSerializer(obj.GetType(), knownTypes);
var memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, obj);
memoryStream.Position = 0;
obj = (T)serializer.ReadObject(memoryStream);
return obj;
}
}
Run Code Online (Sandbox Code Playgroud)
您负责的两项任务:
Equals/GetHashCode实现,那么可能已经为您完成了.您可以尝试使用通用反射比较器,但这可能不完全可靠.| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |