请问反射得到的集合属性如何赋值?
ConstructorInfo info = type.GetConstructor(new Type[] { });
object objEntity = info.Invoke(null);
objEntity为实体实体
PropertyInfo property = pType.GetProperty(detailName);
property 为objEntity的集合属性,类型为BindingList <DataEntity>
有一个 BindingList <DataEntity> details
details有一组数据,如何把details的数据赋给property
property.SetValue(objEntity, details, null);
这样赋值是不行的,因为property是只读属性
((BindingList <DataEntity> )property).Add(details[i])
这样的方法也不行,因为没有给objEntity这个实体中的集合属性赋值
请教了,谢谢!
------解决方案--------------------如果属性是 只读的话 是不可以给它赋值的
------解决方案--------------------嗯,如果是你自己写的话,需要自己给属性增添set方法
------解决方案--------------------PropertyInfo property = .....
Type t = property.DeclaringType;
MethodInfo mi = t.GetMethod( "Add ");
mi.Invoke( property , .... )
------解决方案--------------------mi.Invoke( property , .... )
这个方法最后一个参数是object[],意思是这个函数的参数
类似有个方法
void test( int a )
...
MethodInfo mi = type.GetMethod( "test " );
mi.Invoke( type类型实例 ,new object[]{1} )
------解决方案--------------------用type.GetMember( "m_Test ");得到Field,对Field贬值.
------解决方案--------------------((BindingList <DataEntity> )property).Add(details[i])
这样的方法也不行,因为没有给objEntity这个实体中的集合属性赋值
====
你不能先得到BindingList <DataEntity> 的值吗?
BindingList <DataEntity> list = property.GetValue(objEntity, null);
list.Clear();
list.Add(details[i]);