If used properly, Generics and Reflection together can do magic. I am not a big magician but I have put up a small sample to read and load XML data generically.
Scenario: Say you have non-OLTP'ish data which you don't want to hard code in your application but place in XML (which I did) and load the data at the start of your application, may be to cache or use directly.
In this example I have two sets of data: site URLs (you don't need to do this, SiteMap in 2.0 is great, this is just for the sample) and states of different countries (here I am using those of USA).
The namespaces in use are
System.xml (to load and XPath the XML) and
private static Collection<T> Get<T>(XmlNodeList nodeList)
where T : new()
Collection<T> collOfT = new Collection<T>();
foreach (XmlNode node in nodeList)
T t = new T();
PropertyInfo propertiesOfT = typeof(T).GetProperties();
foreach (PropertyInfo property in propertiesOfT)
string value = node.Attributes[property.Name].Value.ToString();
property.SetValue(t, value, null);
<Url Key = "Home" Path = "Home.htm"></Url>
<Url Key = "AdminHome" Path = "Admin.htm"></Url>
<Url Key = "ManagementHome" Path = "Manage.htm"></Url>
<State Abbr="AL" Name ="Alabama" />
<State Abbr="TX" Name ="Texas" />
<State Abbr="NC" Name ="North Carolina" />
<State Abbr="MS" Name ="Mississippi" />
<State Abbr="WV" Name ="West Virginia" />