C# 使用在运行时创建的成员初始化
我们有一个方法,它返回当前显示在网格中的行C# 使用在运行时创建的成员初始化,c#,winforms,.net-2.0,C#,Winforms,.net 2.0,我们有一个方法,它返回当前显示在网格中的行 public override List<object> GetData(int startIndex, int endIndex, string[] rowSortBy, bool[] rowAscSortOrder, string[] rowGroupByOperations, string rowFilterExpression, ref int rowCount) {
public override List<object> GetData(int startIndex, int endIndex, string[] rowSortBy, bool[] rowAscSortOrder,
string[] rowGroupByOperations, string rowFilterExpression, ref int rowCount)
{
List<A> list = new List<A>();
.. logic..
return list;
}
public override List GetData(int startIndex、int endIndex、string[]rowSortBy、bool[]rowassortor、,
string[]rowGroupByOperations,string rowFilterExpression,ref int rowCount)
{
列表=新列表();
…逻辑。。
退货清单;
}
问题是,现在网格列是动态的,它们会根据某些条件不断变化。这意味着我们不能使用类型化类,因为数据成员是动态的。另外,我们不能更改GetData
方法的返回类型,List
,因为第三方控件实际使用了该方法
编辑:我们需要在网格上进行更新
public override List<object> GetData(int startIndex, int endIndex, string[] rowSortBy, bool[] rowAscSortOrder,
string[] rowGroupByOperations, string rowFilterExpression, ref int rowCount)
{
List<A> list = new List<A>();
.. logic..
return list;
}
我唯一能思考的方法就是利用反思来上课
有什么想法吗 听起来您需要在列表中的对象上实现ICustomTypeDescriptor 通过这种方式请求属性,您可以在运行时返回具有新属性的相关数据
第一次我花了一段时间才弄明白,因为它有点复杂。但它确实有效 也许像字典这样的东西更合适?返回类型不能更改。列表Dictionary没有实现IList。但是,您可以将列表中的每个对象都设置为具有列值的字典吗?您可以在自己的类中实现对的支持,但这样做(至少对于分层属性引用)是一项重大任务。如果您实现正确,则可以,但是这需要一点工作,而且在文档方面也很糟糕。@AseemGautam-是的,我已经在一个项目中实现了,网格也会同样工作。它将尝试设置属性,并且您的实现将更新对象中的正确值。