这可能是不可能的/坏主意,但。。。
对象是否可以从集合/枚举中删除自身,或者在绑定数据时"跳过"对象?
因此,对象有效地表示"数据绑定时跳过我"。
从技术上讲,这是两个完全独立的问题。
Q1-对象是否可以从集合中移除自身这在很大程度上取决于所使用的集合类。一个明显的要求是,所包含的对象必须包含对其所在集合的引用。另一个要求是,在枚举集合时不能发生这种情况。这可能不是你想走的路。
Q2-数据绑定时是否可以跳过对象我不知道有任何内置的集合类支持这一点,但应该可以为容器类编写一个自定义枚举器(检查元素并跳过应该排除的元素)。
也就是说,使用LINQ查询作为数据源可能更容易:
List<Foo> foos = new List<Foo>();
var query = foos.Where( f => f.IsNotExcluded );
BindingSource bs = new BindingSource( query ); // bind to query instead of foos
您还可以将过滤后的列表作为属性公开,以备需要:
public class FooManager
{
private List<Foo> foos = new List<Foo>();
public IQueryable<Foo> OnlyEnabledFoos
{
return foos.Where( f => f.IsNotExcluded ).AsQueryable();
}
}
希望这能有所帮助!