C#中如何用反射获取类的对象实例属性^^^^^^^^^^^^^^^^^^^^^

cefriend 2010-06-28 10:48:49
示例如下

三个类

类A
public class A { private string _a;
public string A
{get;set;}
}
类B
public class B {private string _b;
public string B
{get;set;}
}
类A_B
public claa A_B{
private A obj_A;
public A Obj_A{get;set;}

private List<B> obj_B;
public List<B> Obj_B{get;set;}
}

现在我想通过反射获取 A_B 类中的属性对象, 属性的类性,属性对象名 不知道如何得到
class program
{
public static void Main()
{

//1使用Type类提供的静态方法GetType()得到类对象
Type objType = Type.GetType("命名空间.A_B");


................这里不知道如何写,请教C#反射高手(我想得到 obj_A 对象的类型 obj_B对象类型)


}
}
...全文
2656 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnxthy 2011-08-21
  • 打赏
  • 举报
回复
学习~!
moxiaott 2011-07-06
  • 打赏
  • 举报
回复
楼上说的都对,不过说的都是屁话,既然要反射那这个反射类就应该是工厂类,这个类不会知道转换成什么类,直接返回object对象,所以用PropertyInfo屁都得不得,楼主还是使用这个
Object obj = new Object();
obj = Activator.CreateInstanceFrom("models.dll", "models.M3").Unwrap();
MemberInfo[] members = obj.GetType().GetMembers();
string s = "sss";
for(int i=0;i<members.Length;i++)
{
MessageBox.Show( members[i].Name+" "+members[i].ToString());//显示出属性名和属性数据类型
members[i].MemberType.ToString().Equals("Field");//可以判断出这个属性是不是自己添加的属性
}
//设置对象中某个属性的值"title"就是model属性你可以迭代赋值,可以通过上面的方法获取属性名动态赋值
obj.GetType().InvokeMember("title", BindingFlags.SetField, null, obj, new Object[] { s });
top_wo 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 cefriend 的回复:]

引用 5 楼 wuyq11 的回复:
PropertyInfo[] peroperties = typeof(A).GetProperties(BindingFlags.Public | BindingFlags.Instance);

foreach (PropertyInfo property in peroperties)
{
object[] objs = property.G……
[/Quote]

如果你连这个都有点看不懂,劝你还是放弃学编程吧,找点不用懂脑子的行业,其实也很好。
cefriend 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
PropertyInfo[] peroperties = typeof(A).GetProperties(BindingFlags.Public | BindingFlags.Instance);

foreach (PropertyInfo property in peroperties)
{
object[] objs = property.GetCustomAttribu……
[/Quote]


这位楼主你的回答我没看明白,
  • 打赏
  • 举报
回复
靠,数组对象还不知道怎么用。。。不想多说了。走人
cefriend 2010-06-28
  • 打赏
  • 举报
回复
................这里不知道如何写,请教C#反射高手(我想得到 obj_A 对象的类型 obj_B对象类型)
上面的那位,那我问题我如何得到 obj_B 的对象类型 B 你们的那个方法得到的是 list 对象


自已跟个B一样

  • 打赏
  • 举报
回复
扯淡,这个就是从生产环境的代码中拷过来的。什么叫没测试
宇峰科技 2010-06-28
  • 打赏
  • 举报
回复
学习了
  • 打赏
  • 举报
回复
using System.Reflection;
cefriend 2010-06-28
  • 打赏
  • 举报
回复
没有得到,你们都没测试
RHCL 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cefriend 的回复:]
上面的几位,你们这种方法我是得不到的
[/Quote]
你引用了没
  • 打赏
  • 举报
回复
PropertyInfo类有MemberType, Name(属性对象名), PropertyType(属性的类性)等等属性,不知道楼主要的是什么信息?
angel6709 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 healer_kx 的回复:]
C# code

Type objType = Type.GetType("ConsoleApplication1.A_B");
PropertyInfo[] pi = objType.GetProperties();
Console.WriteLine(pi[0].PropertyType);



结贴吧。……
[/Quote]

给分呵呵
healer_kx 2010-06-28
  • 打赏
  • 举报
回复

Type objType = Type.GetType("ConsoleApplication1.A_B");
PropertyInfo[] pi = objType.GetProperties();
Console.WriteLine(pi[0].PropertyType);


结贴吧。
t20100504t 2010-06-28
  • 打赏
  • 举报
回复
up up ~
mapserver 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cefriend 的回复:]

上面的几位,你们这种方法我是得不到的
[/Quote]

怎么会得不到?????
把类和属性的代码贴出来。。。
wuyq11 2010-06-28
  • 打赏
  • 举报
回复
PropertyInfo[] peroperties = typeof(A).GetProperties(BindingFlags.Public | BindingFlags.Instance);

foreach (PropertyInfo property in peroperties)
{
object[] objs = property.GetCustomAttributes(typeof(DescriptionAttribute), true);
}
cefriend 2010-06-28
  • 打赏
  • 举报
回复
上面的几位,你们这种方法我是得不到的
mapserver 2010-06-28
  • 打赏
  • 举报
回复

命名空间.A_B obj = new 命名空间.A_B();
Type objType = Type.GetType("命名空间.A_B");
PropertyInfo propertyInfo = objType.GetProperty("PropertyName", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);

object propertyValue = propertyInfo.GetValue(obj, null);
  • 打赏
  • 举报
回复
PropertyInfo[] pinfo = objType.GetProperties();
加载更多回复(3)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧