Как расширить существующий объект в C # 4.0, используя динамику

Я хотел бы иметь что-то похожее на свойство prototype javascript в c #.
Идея состоит в том, чтобы расширить экземпляр класса, как вы делаете в javascript.
Самым близким, что я нашел, было использование ExpandoObject, но вы не можете инициализировать его с существующим объектом.
Другая проблема заключается в том, что вы можете получить исходный объект из ExpandoObject.

Вот что я хочу сделать

var originalObject = new Person();
originalObject.name = "Will";
var extendedObject = new ExpandoObject();
extendedObject.lastName = "Smith";

//do something

originalObject = (Person) extendedObject;

Ответы на вопрос(1)

Ваш ответ на вопрос