Вы действительно можете "заставить" его работать на любом классе довольно легко.
Сначала вам нужно написать метод расширения объекта в пространстве имен System:
public static class ObjectExtensions
{
public static void InitializePropertyDefaultValues(this object obj)
{
PropertyInfo[] props = obj.GetType().GetProperties();
foreach (PropertyInfo prop in props)
{
var d = prop.GetCustomAttribute<DefaultValueAttribute>();
if (d != null)
prop.SetValue(obj, d.Value);
}
}
}
Затем в конструкторе класса, который достаточно высок в иерархии ваших классов, которые действительно нуждаются в такой автоматической инициализации значения по умолчанию, вам просто нужно добавить одну строку:
public MotherOfMyClasses()
{
this.InitializePropertyDefaultValues();
}