Có một số điều kỳ diệu xảy ra với WCF deserialization. Làm cách nào để nó khởi tạo một thể hiện của kiểu hợp đồng dữ liệu mà không cần gọi hàm tạo của nó?
Ví dụ: hãy xem xét hợp đồng dữ liệu này:
[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
}
Khi lấy một thể hiện của đối tượng này thông qua DataContractSerializer
bạn sẽ thấy rằng trường _wasConstructorCalled
là false
.
Vậy WCF thực hiện điều này như thế nào? Đây có phải là một kỹ thuật mà những người khác cũng có thể sử dụng, hay nó bị che giấu khỏi chúng ta?