Using Custom Attributes to Populate Members from IDataReader
public class DatabaseField: Attribute


According to the naming guidelines, the names of attribute classes should end with Attribute, so this class should be called DatabaseFieldAttribute.



public string Name { get; set; }


I don't see any reason why the setter should be public, so I would make it private.



public Employee( IDataReader reader )


I don't think all this code should be here. Instead, it should be in a library that's not specific to your types.



Have you considered adding the knowledge of your naming conventions to your code, so that not all properties need the attribute?

Also, I would go the other way around: for each column in the reader, find the appropriate property to set. That way, if your type is missing a property, you can learn about it.



foreach( object attr in prop.GetCustomAttributes(true) )


I would use the generic extension method GetCustomAttribute&lt;T&gt;() here, to simplify your code:

var attr = prop.GetCustomAttribute&lt;DatabaseFieldAttribute&gt;(true);




if( null != field )


There is not reason to use Yoda conditions in C#. The issue they're addressing is that buggy code like if (field = null) is valid C and C++. But it's not valid C#.