Tôi đã xem các diễn đàn đọc mã bố cục sau và các bài đăng trên blog khác và được điều chỉnh để đặt một số câu hỏi.C# Lớp trừu tượng triển khai Giao diện
public interface IService<T>
{
int Add(T entity);
void Update(T entity);
}
public abstract class ServiceBase<T> : IService<T>
{
public int Add(T entity) { ... }
public void Update(T entity) { ... }
}
public interface ICarService : IService<Car>
{
}
public class SomeBaseClass : ServiceBase<Car>, ICarService
{
public int Add(Car entity);
public void Update(Car entity);
}
Điều tôi không hiểu là lợi ích của việc có lớp trừu tượng ngụ ý giao diện. Đối với tôi nó chỉ cảm thấy một chút lặp đi lặp lại và tôi không thể hiểu được lợi ích của việc có một lớp trừu tượng thực hiện giao diện.
- Tại sao lớp trừu tượng
ServiceBase<T>
chỉ định nghĩa là không cần phải kế thừa giao diện IService? Việc này có tăng gấp đôi mã không? - Tại sao phải
SomeBaseClass
cũng ngụ ý sốICarService
? Liệu ServiceBase có đủ không?
Một điều tôi đã thông báo là trong SomeBaseClass tôi luôn luôn nhận được một cảnh báo về các phương pháp mà nói 'X giấu được thừa hưởng thành viên Y. Sử dụng từ khóa mới nếu ẩn các được dự định'. Vì lớp trừu tượng có 'Thêm', giao diện dịch vụ có 'Thêm', nó không biết phải làm gì. – fes
Bạn có ý gì bởi "nó" trong câu cuối cùng? Cảnh báo trình biên dịch hoàn toàn đúng ở đó ... –