2011-02-09 31 views
6

Cách hiệu quả nhất để yêu cầu một MethodInfo là gì nếu nó chấp nhận các tham số và nếu có, bao nhiêu?Cách hiệu quả nhất để yêu cầu một MethodInfo có bao nhiêu tham số cần?

Giải pháp hiện tại của tôi là: methodInfo.GetParameters().Any()methodInfo.GetParameters().Count().

Đây có phải là cách hiệu quả nhất không?

Vì tôi không thực sự cần bất kỳ đối tượng ParameterInfo nào, có cách nào để thực hiện việc này mà không cần gọi đến số GetParameters() không?

Trả lời

10

Hai bạn đã liệt kê là dành cho LINQ. Any() trả về bool - nói rằng có ít nhất một. Count() được sử dụng bất kỳ trên IEnumerable<T>.

Length (thuộc tính) sẽ là nhanh nhất vì GetParameters() trả lại ParameterInfo[].

Dường như không MethodInfo có cách nào khác để truy cập vào số tham số khác ngoài GetParameters().

+0

Tôi cập nhật các câu hỏi. – smartcaveman

+0

Bạn có quen thuộc với MethodImplAttributes hoặc bạn có biết liệu chúng có thể được sử dụng để xác định điều này không? – smartcaveman

+0

Tôi không phải là cá nhân. Nó không giống như nó được áp dụng. –

5

Nếu hiệu quả quan trọng tại sao bạn không chỉ lưu vào bộ nhớ cache kết quả trong một Dictionary<MethodInfo,int>? Bằng cách đó bạn chỉ cần sử dụng sự phản chiếu chỉ một lần.

0

Nếu bạn muốn nhận được số lượng các thông số của một MethodInfo, sau đó sử dụng đoạn mã sau

int intLength = mi.GetParameters().Length; // where mi is a variable of type MethodInfo 
Các vấn đề liên quan