2009-09-04 18 views
13

Các constructor trông như thế này:Làm thế nào để có được xây dựng như MethodInfo sử dụng Reflection

public NameAndValue(string name, string value) 

tôi cần để có được nó như là một MethodInfo sử dụng Reflection. Nó đã cố gắng như sau, nhưng nó không tìm thấy các nhà xây dựng (GetMethod trả về null).

MethodInfo constructor = typeof(NameAndValue).GetMethod(".ctor", new[] { typeof(string), typeof(string) }); 

Tôi đang làm gì sai?

Trả lời

9

Type.GetConstructor. Lưu ý điều này trả về một ConstructorInfo chứ không phải là một MethodInfo, nhưng chúng đều lấy được từ MethodBase vì vậy hầu hết đều có cùng thành viên.

5
ConstructorInfo constructor = typeof(NameAndValue).GetConstructor 
     (new Type[] { typeof(string), typeof(string) }); 

Bạn nên có các phần tử bạn cần trong ConstructorInfo, tôi không biết cách nào để có được MethodInfo cho hàm tạo.

Kindness,

Dan

+0

Tôi đã biết cách lấy ConstructorInfo, nhưng tôi nghĩ mình cần MethodInfo, trong khi chỉ cần MethodBase. Cảm ơn câu trả lời của bạn mặc dù. –

0

Tôi tin rằng điều duy nhất bạn bị mất tích là BindingFlags đúng. Tôi không chỉ định các kiểu tham số trong ví dụ này nhưng bạn có thể làm như vậy.

var typeName = "System.Object"; // for example 
var type = Type.GetType(typeName); 
var constructorMemberInfos = type.GetMember(".ctor", BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); 
// Note that constructorMemberInfos will be an array of matches 
Các vấn đề liên quan