Предполагаю, что поле Company в объекте Im.Work описано тоже как свойство:
public Company Company{ get; set; }
В этом случае, когда вы пишете Im.Work.Company.CompanyName="Name", вызывается метод get для Company, возвращает копию структуры (потому что вернуть ссылку не может), и дальше вы пытаетесь в этой копии, никуда её не положив, поменять одно из полей. Оригинал от этого точно не изменится, и, по-видимому, компилятор не даёт выполнить заведомо бессмысленное действие (изменить объект, который сейчас будет уничтожен).