Если вы хотите создать объект, который поддерживает добавление свойств во время выполнения и вы можете использовать C # 4.0, вы можете использовать System.Dynamic.ExpandoObject
dynamic myObject = new ExpandoObject();
myObject.AnswerToUltimateQuestionOfTheUniverse = 42;
РЕДАКТИРОВАТЬ: я вижу, что вы прямо упомянули C # 3.0. Это больше не применимо.