I\'ve been working with C# for many years now, but just come across this issue that\'s stumping me, and I really don\'t even know how to ask the question, so, to the example!
You could have a constructor on each class taking an IAddress and have implemented members populated within.
eg
public WorkAddress(Iaddress address) { Line1 = IAddress.Line1; ... }
For maintainability use reflection to get property names.
HTH,
Dan