Tôi đã tái cấu trúc mã nguồn của dự án mà tôi hiện đang sử dụng để các lớp/giao diện không hữu ích ngoài giới hạn của hội đồng phải được khai báo là nội bộ (chứ không phải là công khai) . Nhưng tôi đã chạy vào một vấn đề với đoạn mã sau:Làm cách nào để thực hiện các thành viên của các giao diện nội bộ
internal interface IFirstInterface
{
...
}
internal interface ISecondInterface
{
IFirstInterface First{ get; }
...
}
public class Implementer : ISecondInterface
{
public IFirstInterface First {get; private set;}
...
}
Câu hỏi của tôi:
Tại sao các thành viên của giao diện nội bộ đã được thực hiện công khai? Nếu bạn triển khai giao diện trên một lớp nội bộ, thì các thành viên được triển khai có phải là nội bộ không? Đây không phải là một vấn đề lớn vì các thành viên giao diện sẽ không được truy cập công khai, vì lớp đó là nội bộ. Nó chỉ có vẻ phản trực giác.
Vấn đề chính là với kịch bản nêu trên kể từ khi tôi không thể có một getter công cộng cho IFirstInterface vì nó là tự nhận là một giao diện tức là nội tôi nhận được lỗi sau từ trình biên dịch:
không phù hợp khả năng tiếp cận : bất động sản gõ 'IFirstInterface' là ít truy cập hơn tài sản 'Implementer.First'
là ther e cách nào xung quanh điều này?
Lưu ý: Tôi nhận ra rằng có thể có ít giá trị trong bài tập tái cấu trúc này nhưng tôi nghĩ đó là cách tốt để tôi hiểu sâu hơn về tác động của công cụ sửa đổi nội bộ.
Nếu nó một lựa chọn, bạn có thể khắc phục những hạn chế của phương pháp giao diện đang được công chúng bằng cách sử dụng một lớp cơ sở trừu tượng để thay thế. –