首页 新闻 会员 周边 捐助

正在学习反射,遇到了问题

0
悬赏园豆:10 [待解决问题]

public class TestClass
{
private string _value;
public TestClass()
{
}
public TestClass(string value)
{
_value = value;
}
public string GetValue(string prefix)
{
。。。。。。

}}

Type t = typeof(ClassLibrary1.TestSpace);
object[] obj = new object[] { "timmy" };
PropertyInfo[] p = t.GetProperties();
MethodInfo[] m = t.GetMethods();
object DOBJ = Activator.CreateInstance(t,obj);
最后一步出现无法找到构造函数的错。

灬丶的主页 灬丶 | 初学一级 | 园豆:3
提问于:2016-09-07 10:37
< >
分享
所有回答(2)
0

http://www.cnblogs.com/CreateMyself/p/4680229.html

Jeffcky | 园豆:2789 (老鸟四级) | 2016-09-07 10:39
0

Type t = typeof(ClassLibrary1.TestSpace);

应该是TestClass。

Daniel Cai | 园豆:10424 (专家六级) | 2016-09-07 10:41

原来如此

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-07 10:51

感觉反射好难懂啊,自己写好难写出来

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-07 10:59

@灬丶: 从Type中去挖掘对象的MemberInfo,如果是字段就是派生于MemberInfo的FiledInfo,如果是属性就是PropertyInfo(同样也从memberInfo派生,后同),如果是构造函数就是ConstructInfo咯,依次类推。

如果在一个MemberInfo上有attribute,那么就从拿到的这个MemberInfo上再去拿CustomAttribute咯。

如果我要去执行一个方法(包括构造函数),那么就需要你先拿到这个MethodInfo,在拿的时候肯定有条件了,比如可见性(BindingFlag),每个参数的类型(方便区分重载)。拿到后当然就要把参数塞进去了,最后invoke下就可以了。

再放广点,同样也可以衍生到对程序集,泛型等做这种操作。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2016-09-07 11:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册