Câu hỏi trong tiêu đề ... Tóm lại - Tôi có một dịch vụ WCF trưng bày các hoạt động trả về các lớp thực thể. Các lớp phía máy khách kế thừa từ một lớp cơ sở trừu tượng thay vì System.Object mặc định. Lớp cơ sở trừu tượng có một hàm tạo mặc định được định nghĩa. Khi gọi một trong các phương thức dịch vụ, tôi mong rằng hàm tạo sẽ được gọi khi bộ nối tiếp datacontract hiện thực hóa các đối tượng được trả về. Tuy nhiên, hàm tạo không được gọi. Nếu mặt khác, tôi tạo một cá thể của lớp thực thể, sau đó hàm tạo lớp trừu tượng được gọi.Tại sao hàm tạo lớp cơ sở trừu tượng của tôi không được gọi khi một đối tượng được khởi tạo bởi trình gỡ rối WCF?
Tại sao, oh tại sao và có cách giải quyết khác không? Hoặc tôi đã bỏ lỡ một cái gì đó - là có một chữ ký constructor được gọi bởi serializer datacontract khi materializing đối tượng? Nếu không, làm thế nào có thể bộ nối tiếp datacontract vật hoá các đối tượng mà không cần gọi các nhà xây dựng theo cùng một cách mà một cuộc gọi "SomeClass() mới" sẽ làm gì? Hay tôi đã uống quá nhiều cà phê hôm nay (chỉ có 2 hoặc 3 ly cho đến nay)?
Cảm ơn câu trả lời nhanh. Wow. Điều đó làm tôi ngạc nhiên. Tôi nghĩ rằng tất cả các khởi tạo đối tượng sẽ dẫn đến các nhà thầu được gọi. Ồ, tôi đã học được điều gì đó mới mẻ hôm nay ... :) – KristoferA
Nó thực sự khá đáng ngạc nhiên. Tôi đã phải đào xung quanh trong phản xạ lần đầu tiên tôi nhìn thấy nó! –
Câu hỏi tiếp theo [tò mò] sẽ là: _why_ họ đã làm theo cách đó? Hiệu suất? Để gây rối với đầu của chúng tôi? Hoặc một số lý do khác tốt hơn? :) – KristoferA