Đối với một đối tượng, tôi có thể nhận được tất cả các lớp con của nó bằng cách sử dụng sự phản chiếu không?Đối với một đối tượng, tôi có thể nhận tất cả các lớp con của nó bằng cách sử dụng phản chiếu hoặc các cách khác không?
Trả lời
Bạn có thể tải tất cả các loại trong Assembly và sau đó liệt kê chúng để xem cái nào thực hiện kiểu đối tượng của bạn. Bạn đã nói 'đối tượng' để mẫu mã bên dưới không dành cho giao diện. Ngoài ra, mẫu mã này chỉ tìm kiếm cùng một cụm như đối tượng đã được khai báo.
class A
{}
...
typeof(A).Assembly.GetTypes().Where(type => type.IsSubclassOf(typeof(A)));
Hoặc như được đề xuất trong nhận xét, sử dụng mẫu mã này để tìm kiếm qua tất cả các cụm được nạp.
var subclasses =
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.IsSubclassOf(typeof(A))
select type
Cả hai mẫu mã yêu cầu bạn thêm using System.Linq;
giao diện
lớp con ý nghĩa? Có:
this.GetType().GetInterfaces()
Loại con nghĩa là loại cơ sở? Vâng, C# chỉ có thể có một lớp cơ sở
Các lớp con có nghĩa là tất cả các lớp được kế thừa từ lớp của bạn? Có:
EDIT: (nhờ vcsjones)
foreach(var asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in asm.GetTypes())
{
if (type.BaseType == this.GetType())
yield return type;
}
}
Và làm điều đó cho tất cả các assembly được nạp
"Lớp con có nghĩa là giao diện" - xin lỗi, nhưng điều này không có ý nghĩa – BartoszKP
- 1. Tải tất cả các đối tượng có lớp vào một mảng bằng cách sử dụng jQuery
- 2. Phản chiếu Javascript - nhận tất cả các thuộc tính của một đối tượng?
- 3. Với một NSArray của các tham chiếu đối tượng, tôi có thể giải phóng tất cả các đối tượng trong mảng hoặc chỉ mảng đó không?
- 4. Lớp phản chiếu để lấy tất cả các thuộc tính của bất kỳ đối tượng nào
- 5. Có thể tạo một lớp Repository chung cho tất cả các đối tượng của tôi không?
- 6. đối tượng khởi tạo với sự phản chiếu bằng cách sử dụng đối số hàm dựng
- 7. Làm thế nào tôi có thể nhận được tất cả các tham chiếu với Reflection + C#
- 8. Tôi có thể yêu cầu CLR đối chiếu các đối tượng bất biến giữa AppDomains bằng cách tham chiếu không?
- 9. các lớp con của đối tượng gấu trúc hoạt động khác với lớp con của đối tượng khác?
- 10. Cách xóa một chi nhánh và tất cả các đối tượng mà nó tham chiếu
- 11. AppleScript: Lấy danh sách tất cả các thuộc tính của một đối tượng hoặc lớp
- 12. Tôi có thể có các loại đối tượng khác nhau trong một khối C * bằng cách sử dụng * không?
- 13. Sử dụng đối tượng lớp trên các phiên bản khác nhau của cùng một assembly bằng cách sử dụng Reflection
- 14. Tôi làm cách nào để tìm tất cả các đối tượng tham chiếu myObject?
- 15. SPARQL: Nhận tất cả các thực thể của các lớp con của một lớp nhất định
- 16. Các mẫu và mẫu lớp đẹp cùng với tất cả các đối số mẫu của nó
- 17. Tìm đối tượng con trong danh sách các đối tượng cha bằng cách sử dụng LINQ
- 18. Nhận tất cả các đối tượng của một lớp học đặc biệt
- 19. Lặp lại tất cả các thuộc tính của một đối tượng trong javascript bằng Prototype?
- 20. Làm thế nào để in một lớp hoặc các đối tượng của lớp bằng cách sử dụng print()?
- 21. Lựa chọn tất cả các đối tượng con trong LINQ
- 22. Hoán đổi đối tượng bằng cách sử dụng con trỏ
- 23. C#: Tạo tham chiếu mạnh mẽ giữa các đối tượng, không có tham chiếu đến các đối tượng khác
- 24. Lớp cơ sở trừu tượng cho tất cả các đối tượng thực thể miền
- 25. Tạo đối tượng mới bằng cách sử dụng sự phản chiếu?
- 26. Tôi có thể khởi tạo một lớp bằng cách sử dụng đối tượng lớp không? Điều gì về Constructors?
- 27. Cách tự động đặt giá trị của thuộc tính của đối tượng bằng cách sử dụng phản chiếu?
- 28. Lấy các giá trị trường tĩnh của một kiểu bằng cách sử dụng sự phản chiếu
- 29. Việc tạo một thể hiện của một lớp con có tự động tạo đối tượng siêu lớp của nó không?
- 30. Làm thế nào tôi có thể buộc một Constructor được định nghĩa trong tất cả các lớp con của lớp trừu tượng của tôi
Để làm được điều tương tự cho một giao diện thay vì một đối tượng/lớp, có sự thay đổi nơi cho ' nơi typeof (IMyInterface) .IsAssignableFrom (type) && type.IsClass' ([câu hỏi gốc] (http://stackoverflow.com/questions/26733/getting-all-types-that-implement-an-interface-with-c -sharp-3-0)). – jtpereyda