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-是的,我已经在一个项目中实现了,网格也会同样工作。它将尝试设置属性,并且您的实现将更新对象中的正确值。