In many applications, the ability to dynamically load and execute third-party code (in the form of plug-ins) is highly desirable. Plug-ins can be used to provide: Alternative implementations of built-in features Completely new features (given some kind of framework on which they can be built) All functionality in the application (e.g. in a test harness,… Continue reading

Presents sequences (instances of IEnumerable or IEnumerable) as logical aggregations of data as an alternative to the traditional view of a persistent collection. Demonstrates how LINQ operators treat both persisted and non-persisted sequences equally (even infinite sequences). Introduces the LINQ Concat<> operator and explains how its result can be used like a database view. Shows how to bind controls to instances of IEnumerable using a list wrapper, as well as explaining the advantages presented by doing so. Continue reading

Regular Windows Forms data-binding can only bind to the properties directly belonging to each list item. This post explains how to bind to properties of properties (and so on, recursively) by creating a special collection class that exposes nested properties using ITypedList and PropertyDescriptor. You can use AggregationBindingList as a data source for the ComboBox, ListBox and DataGridView controls. Continue reading