2010-05-31 2 views
1

, 나는이 다음 currentItem의 속성의 값이 originalItem의의 다른 경우원래 엔터티 개체의 속성을 현재 엔터티 개체로 덮어 쓸 수있는 더 짧은 방법이 있습니까? 예를 들어

originalItem.Property1 = currentItem.Property1; 
originalItem.Property2 = currentItem.Property2; 
originalItem.Property3 = currentItem.Property3; 
originalItem.Property4 = currentItem.Property4; 

속성도 변경됩니다.

여기에 단축키가 있습니까? 감사.

답변

1

예, reflection을 통해이 작업을 수행 할 수 있습니다.

두 인스턴스의 속성을 읽고 리플렉션의 도움으로 할당하십시오. 여기

은 .. 일부 코드의

public static void AssignSourceToDestination(Object source, ref Object destination) 
    { 
     IList<PropertyInfo> sourceProps = source.GetProperties(); 
     IList<PropertyInfo> destProps = destination.GetProperties(); 

     foreach (PropertyInfo property in destProps) 
     { 
      if (property.CanWrite) 
      { 
       PropertyInfo sourceProp = sourceProps.Where(p => p.Name.Equals(property.Name) && 
        p.PropertyType.Equals(property.PropertyType) && p.CanRead).First(); 
       if (null != sourceProp) 
        property.SetValue(destination, sourceProp.GetValue(source, null), null); 
      } 
     } 
    } 

    public static IList<PropertyInfo> GetProperties(this Object me) 
    { 
     return me.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList(); 
    } 
관련 문제