 <p>Can you use reflection to get the list of properties specific to an subclass (instance)? (Less error-prone.)</p> <p>If not, create a (virtual) method which returns the special properties. (More error prone!)</p> <p>For an example of the latter:</p> <pre><code>abstract class Customer { public virtual string Name { get; set; } public virtual IDictionary&lt;string, object&gt; GetProperties() { var ret = new Dictionary&lt;string, object&gt;(); ret["Name"] = Name; return ret; } } class HighValueCustomer : Customer { public virtual int MaxSpending { get; set; } public override IDictionary&lt;string, object&gt; GetProperties() { var ret = base.GetProperties(); ret["Max spending"] = MaxSpending; return ret; } } class SpecialCustomer : Customer { public virtual string Award { get; set; } public override IDictionary&lt;string, object&gt; GetProperties() { var ret = base.GetProperties(); ret["Award"] = Award; return ret; } } </code></pre> <p>You probably want to create sections (<code>fieldset</code>s?) on your Web page, anyway, so <code>if</code> would come into play there, making this extra coding kinda annoying and useless.</p>