cuốn sách gpt4 ai đã làm

c# - (反)序列化特定子类而不使用 [ProtoInclude]

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 12:00:20 32 4
mua khóa gpt4 Nike

Tôi đang xem xét việc di chuyển ứng dụng dựa trên WCF hiện tại của mình sang protobuf-net.Grpc. Điều này có vẻ hiệu quả, nhưng tôi không thể lấy các thuộc tính được tuần tự hóa protobuf-net của lớp cơ sở (lớp DTO) mà không bao gồm tất cả các lớp dẫn xuất có thuộc tính [ProtoInclude].

Hệ thống phân cấp lớp đơn giản hóa:

[Hợp đồng dữ liệu]
lớp trừu tượng công khai DtoBase
{
[DataMember(Đơn hàng = 1)]
Id int công khai { get;set }
[DataMember(Đơn hàng = 2)]
Phiên bản int công khai { get;set }
[DataMember(Đơn hàng = 3)]
công khai EditState EditState { get;set }
}

[Hợp đồng dữ liệu]
lớp công khai PersonDto : DtoBase
{
[DataMember(Đơn hàng=4)]
chuỗi công khai FirstName { get;set }
[DataMember(Đơn hàng=5)]
chuỗi công khai LastName { get;set }
}

Tôi đã xem xét các vấn đề liên quan và nhận thấy rằng cần phải biết một loại cụ thể trong quá trình khử lưu huỳnh - hoặc cần có cách để xác định nó. Phương thức dịch vụ của chúng tôi đã biết lớp con cụ thể sẽ sử dụng, ví dụ: chúng tôi có một phương thức như thế này

[Hợp đồng dịch vụ]
giao diện công cộngIpersonService
{
[Hợp đồng hoạt động]
ScalarResult GetById(personId);
}

DataContractSerializer có thể thực hiện điều đó - giải tuần tự hóa các thuộc tính của lớp cơ sở khi biết một lớp con cụ thể. Khi bạn giải tuần tự hóa một lớp con có chữ ký của lớp cơ sở, nó sẽ yêu cầu các gợi ý (các loại đã biết), chẳng hạn như trả về PersonDto thay vì DtoBase. Nhưng khi lớp con cụ thể đã được biết thì không cần loại đã biết và mọi thứ đều hoạt động tốt.

Vậy câu hỏi đặt ra là làm cách nào để thực hiện điều tương tự với protobuf-net? Nếu không thể thì tại sao?

câu trả lời hay nhất

Protobuf-net, giống như bất kỳ thư viện nào, đưa ra những giả định và thỏa hiệp nhất định. Nếu muốn hỗ trợ các kịch bản bổ sung, chúng cần được chỉ định, thiết kế, triển khai, thử nghiệm và hỗ trợ - tất cả đều cần có thời gian. Kịch bản bạn mô tả cho đến nay: Không có nhiều thời gian được đầu tư.

可以使用 Loại thời gian chạyMô hình API định cấu hình các thuộc tính loại cơ bản, nhưng tôi phải nhấn mạnh: về cơ bản, bất cứ khi nào có sự cố xảy ra:

Model hiện tại của tôi không hoạt động tốt với bộ nối tiếp mà tôi đã chọn

Câu trả lời mặc định của tôi (dựa trên kinh nghiệm hàng chục năm trong lĩnh vực này) là:

Nếu mô hình hiện tại của bạn không phù hợp với một bộ tuần tự hóa khác: hãy ngừng đấu tranh với bộ tuần tự hóa, thay vào đó, hãy tạo một mô hình mới hoạt động hoàn hảo với lựa chọn bộ tuần tự hóa mới của bạn và chuyển đổi giữa các mô hình tại thời điểm (hủy) tuần tự hóa.

Về c# - (de) tuần tự hóa một lớp con cụ thể mà không sử dụng [ProtoInclude], chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/57341796/

32 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress