Ok, tôi đang cố gắng để làm như sau:Phương pháp quá tải: phễu cuộc gọi đến lớp có nguồn gốc lý luận quá tải
protected bool ValidAdvert(Base item)
{
throw ThisIsAnAbstractClassException();
}
protected bool ValidAdvert(Derived1 item)
{
return ADerived1SpecificPredicate;
}
protected bool ValidAdvert(Derived2 item)
{
return ADerived2SpecificPredicate;
}
Và có các phiên bản lớp Derived của phương pháp này được gọi là, khi một lớp cơ sở sẽ được chuyển cho phương pháp. Lớp cơ sở là trừu tượng, do đó, điều này có nên, theo lý thuyết, có thể?
Trước khi ai đó nói điều gì đó về quá tải phương thức trên lớp, logic bên trong các phương thức dựa trên một số lượng lớn các điều kiện khác nhau, không có điều kiện nào liên quan đến chúng. như tình trạng đăng nhập, vv)
Cũng thông minh, và tránh rối tung với các lớp học có nguồn gốc khác nhau (tôi muốn có chỉ có 2!). –
khá ghi chú: bạn cần phải cast để bool trên sự trở lại, và method.Invoke mất một [] của các đối tượng, và do đó craps ra nếu bạn cố gắng và vượt qua chỉ 1 :) Cảm ơn mặc dù! –
@Ed - Tôi nghĩ rằng việc giữ vị từ với lớp dẫn xuất thực sự là phương thức ưa thích. Việc lưu trữ logic lớp cụ thể có nguồn gốc trong một lớp cơ sở tạo ra một sự ghép nối ngược giữa hai lớp. Tôi không thấy đây là một điều tốt. Lớp cơ sở không cần biết bất cứ điều gì về các lớp dẫn xuất của nó. – tvanfosson