WCF反序列化有一些不可思议的事情。如何在不调用其构造函数的情况下实例化数据协定类型的实例?
例如,考虑以下数据合同:
[DataContract]
public sealed class CreateMe
{
[DataMember] private readonly string _name;
[DataMember] private readonly int _age;
private readonly bool _wasConstructorCalled;
public CreateMe()
{
_wasConstructorCalled = true;
}
// ... other members here
}
通过获取此对象的实例时,DataContractSerializer
您会看到字段_wasConstructorCalled
为false
。
那么,WCF如何做到这一点?这是其他人也可以使用的技术,还是对我们隐藏?