首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用反射获取构造的子类型的集合

使用反射获取构造的子类型的集合
EN

Stack Overflow用户
提问于 2019-05-23 00:23:05
回答 2查看 0关注 0票数 0

我想创建一个实现IEnumerable <T>的类,但是,使用反射生成T并通过IEnumerable <T>返回它们,其中T'是T的完全构造的子类,其中一些属性被隐藏而其他属性是只读的。

好吧,那可能不太清楚。让我通过代码介绍解释一下 - 我想要一个类CollectionView <T>如下: -

代码语言:javascript
复制
public class CollectionView<T> : IEnumerable<T> {
  public CollectionView(IEnumerable<T> inputCollection, 
    List<string> hiddenProperties, List<string> readonlyProperties) {
    // ...
  }

  // IEnumerable<T> implementation which returns a collection of T' where T':T.
}

...

public class SomeObject {
  public A { get; set; }
  public B { get; set; }
  public C { get; set; }
}

...

var hiddenProperties   = new List<string>(new[] { "A" });
var readOnlyProperties = new List<string>(new[] { "C" });

IEnumerable<SomeObject> someObjects = CollectionView<SomeObject>(hiddenProperties,
  readOnlyProperties);

...

dataGridView1.DataSource = someObjects;

(当在dataGridView1中显示时,显示列B和C,并且C具有只读的基础存储)

这是可能的/可取的还是我完全忘记了/这个问题是否证明了我作为程序员的深刻不足?

我想这样做,所以我可以操作一个要传递给DataGridView的集合,而不必直接操作DataGridView来隐藏列/使列只读。所以没有'哦,只需使用dataGridView1.Columns.Remove(blah)/ dataGridView1.Columns [blah] .ReadOnly = true'请回答!

救命!

EN

Stack Overflow用户

发布于 2019-05-23 08:54:30

即使通过创建子类代理,您也无法隐藏属性。你至少可以动态地构造一个不同的类型,它拥有良好的属性,但它不会是一个T

但是,如果您只需要使用数据绑定,则返回对象列表就足够了。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档