Если это ваши собственные объекты, вы можете предоставить индекс для доступа к полям. Я не рекомендую это, но это позволит вам что угодно.
public object this[string propertyName]
{
get
{
if(propertyName == "Reference")
return this.Reference;
else
return null;
}
set
{
if(propertyName == "Reference")
this.Reference = value;
else
// do error case here
}
}
Обратите внимание, что при этом вы теряете безопасность типа.