Tại sao điều này? Tôi sẽ tìm thấy nó thực sự tốt đẹp để có thể có một số phương pháp mở rộng bị khóa xuống để được sử dụng chỉ trong một trong các lớp học của tôi. Không thực sự muốn có phương pháp khuyến nông nào đó có sẵn ở khắp mọi nơi ... và họ trông rất đẹp hơn nhiều so với phương pháp tĩnh thường xuyên: PPhương pháp mở rộng không được phép trong các lớp tĩnh lồng nhau?
Để làm rõ:
Lý do tôi muốn những phương pháp khuyến nông là bởi vì Tôi đang mở rộng một Form, trong đó có một DataGridView trên đó. Và tôi nhận được rất mệt mỏi của dòng như thế này:
foreach(var row in grid.Rows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
foreach(var row in grid.SelectedRows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
có muốn một phương pháp mở rộng vì vậy mà tôi chỉ có thể làm
foreach(var row in grid.Rows.CheckedRows())
foreach(var row in grid.SelectedRows.CheckedRows())
Vì vậy, nói cách khác, phương pháp mở rộng này sẽ không có ích gì cả bên ngoài lớp học này. Nhưng nó sẽ làm cho mã sạch hơn rất nhiều. Tất nhiên có thể làm cho các phương pháp thường xuyên, và đó là những gì tôi đã làm, vì điều này là không thể.
Aaanyways, tôi chỉ tò mò muốn biết nếu có ai đó có một số lý lẽ tốt cho lý do tại sao họ đã chọn để đặt một hạn chế như thế này khi các phương pháp mở rộng có thể tạo ra được sử dụng. Phải ở trong một lớp tĩnh có ý nghĩa tổng thể. Không thể nằm trong lớp tĩnh lồng nhau không ... ít nhất là tôi ...
Có vẻ như không có câu trả lời nào trong số các câu trả lời này đưa ra lý do kỹ thuật tốt tại sao không thể thực hiện được. –
Giống như bạn, tôi thích cú pháp phương pháp mở rộng hơn. SomeThing.HasSomeCondition() vượt trội hơn HasSomeCondition (SomeThing). – Mir