Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
You have some interface, IFoo.
It is implemented by two concrete classes:
- Foo : IFoo (what you expose to the outside world)
- FooEntity : IFoo (what you store someplace; it’s a superset of Foo, which implements, IFoo)
And you want a simple way to copy the IFoo properties from one IFoo object, to another IFoo object, bidirectionally.
Here it is:
using System.Reflection;
public static class Reflection
{
/// <summary>
/// Copies all the public instance properties from the source object to the destination object, for the specified type.
/// </summary>
/// <typeparam name="T">The type of the operation.</typeparam>
/// <param name="source">The source object.</param>
/// <param name="destination">The destination object.</param>
public static void CopyPublicInstanceProperties<T>(T source, T destination)
{
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
propertyInfo.GetSetMethod().Invoke(destination, new object[] { propertyInfo.GetGetMethod().Invoke(source, null) });
}
}
}
Where T is an interface (in this case, IFoo) that both objects implement.
Here’s an example:
Reflection.CopyPublicInstanceProperties<IFoo>(foo, fooEntity);
Best!
Brian
Comments
- Anonymous
February 25, 2009
PingBack from http://www.clickandsolve.com/?p=14721