I was in need to copying one concreate object to another concreate object, but I needed the flexability that when a new property is added the method would not need to be changed, also I needed the ability for the method to take in any types.
So the first take was to generate a method that uses reflections to go over the obecjts properts and set the returning object properties. That was quite simple, then to make the method more flexable I used generics to help with my method, to allow for any types to be used.
One thing to note is that you require the try catch, in case the GetValue or SetValue fails, such as if the object is null.
This is what I ended up with.
Here is the VB.NET method
Here is the C#