Tôi đang cố gắng kiểm tra xem một loại nhất định có phải là đại diện hành động hay không, bất kể số lượng thông số.Kiểm tra xem một loại nhất định có phải là đại diện Hành động
Mã sau đây là cách duy nhất tôi biết cách thực hiện việc này.
public static bool IsActionDelegate(this Type source)
{
return source == typeof(Action) ||
source.IsOfGenericType(typeof(Action<>)) ||
source.IsOfGenericType(typeof(Action<,>)) ||
....
source.IsOfGenericType(typeof(Action<,,,,,,,,,,,,,,,>));
}
IsOfGenericType()
là một phương pháp mở rộng khác của tôi, theo những gì nó nói, nó sẽ kiểm tra xem loại có thuộc loại chung nhất định hay không.
Bất kỳ đề xuất nào tốt hơn?
Tôi không biết nếu tìm kiếm theo tên là tất cả những gì xấu cho rằng tên đến từ một không gian tên thư viện và không phải mã người dùng. –
Thông tin chi tiết tuyệt vời, cảm ơn! Tôi đang cố gắng thực hiện một phương thức Delegate.CreateDelegate chung. Ví dụ. 'CreateDelegate> (chủ sở hữu, phương pháp);' Đó là một công việc đang diễn ra nên tôi chưa biết liệu nó có khả thi hay không. Nhưng đó là lý do tại sao tôi cần phân tích tham số chung và kiểm tra loại đại biểu nào được mong đợi. –
@Ritch - nó nhắc tôi kiểm tra loại trình duyệt trong javascript thay vì tính năng kiểm tra - sau này là sạch hơn nhiều. Có lẽ không có cơ sở trong trường hợp này, nhưng tôi sẽ không chạm vào tên nếu tôi không hoàn toàn phải làm vậy. – BrokenGlass