Giả sử chúng ta có class X
trong phiên bản 1 của lắp ráp A.dll
:C# giao diện vỡ, ABI
class X {
SomeType Property { set; get; }
}
và sau đó trong phiên bản 2 của lắp ráp A.dll
:
class X {
SomeType Property { set; get; }
SomeType OtherProperty { set; get; }
}
Bây giờ giả sử chúng ta có một lắp ráp thứ hai B.dll
tải A.dll
và sử dụng X. Việc bổ sung tài sản OtherProperty
có vi phạm ABI không? Sẽ B.dll
không sử dụng A.dll
/X
? Nếu không, thứ tự của các tờ khai có khác biệt gì không? Nếu các thuộc tính đã được ảo, nó có tạo nên sự khác biệt nào không?
Tôi đoán tôi thực sự hỏi: các quy tắc ABI chung là gì? Tôi biết thay đổi giao diện sau khi chúng đã được xuất bản là một điều xấu, nhưng tôi thực sự muốn có thể thêm các thuộc tính trong một số trường hợp, mà không thêm các lớp con.
Xem: Hướng dẫn rõ ràng về các thay đổi phá vỡ API trong .NET http: // stackoverflow.com/questions/1456785/a-definite-guide-to-api-breaking-changes-in-net – Ani
Bạn tải các tệp DLL như thế nào? –
@Mark: Tôi có các khách hàng của bên thứ ba đề cập đến một số hội đồng của tôi. Tôi có một vài lớp mà tôi muốn mở rộng với một vài thuộc tính. Tôi muốn làm như vậy mà không yêu cầu các bên thứ ba biên dịch lại các hội đồng của họ. Tôi có thể yêu cầu họ một cách độc đáo, nhưng tôi không muốn. Nó chỉ cho biết thêm thời gian quay vòng ... –