Giả sử tôi có loại, MyType. Tôi muốn làm như sau:Tìm hiểu xem loại có thực hiện giao diện chung hay không
- Tìm hiểu xem MyType cài đặt giao diện IList, đối với một số T.
- Nếu câu trả lời cho (1) là có, tìm hiểu những gì T là.
Dường như cách để làm điều này là GetInterface(), nhưng điều đó chỉ cho phép bạn tìm kiếm theo tên cụ thể. Có cách nào để tìm kiếm "tất cả các giao diện có dạng IList"
liên quan (Nếu có thể nó cũng woudl thể hữu ích nếu nó làm việc nếu giao diện là một subinterface của IList.): How to determine if a type implements a specific generic interface type
Điều này xử lý trường hợp của mảng là tốt, đó là tốt đẹp. Nếu bạn muốn thử nghiệm các mảng một cách rõ ràng thì hãy sử dụng "if (myType.IsArray) trả về myType.GetElementType();" (Và trong khi điều này có thể nhanh hơn, tôi hy vọng không có điều này là quan trọng về hiệu năng!) – yoyo
Đối với những người như tôi, những người tò mò về lý do tại sao .IsInterface là cần thiết: GetGenericTypeDefinition() ném nếu nó được gọi trên một loại không chung chung. – GameFreak
Thuộc tính Type.IsGenericType không có sẵn trên netstandard 1.6 và thấp hơn (và do đó không có sẵn trên .NET Core 1.0), nhưng bạn có thể sử dụng TypeInfo.IsGenericType thay thế: type.GetTypeInfo(). IsGenericType. – dotarj