wpf2017. 7. 21. 15:13

내가 하고 싶었던거는


이렇게 BASE Model Class가 있고

1
2
3
4
5
public class OrderKey
    {
        public string nTempOrderID { get; set; }
        public string nOrderID { get; set; }
    }


OrderKey를 상속받는 클래스가 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ConvertOrderKey : OrderKey
    {
        public List<OrderItem> OrderItemList { get; set; }
 
        public void CopyFromBase(OrderKey orderKey)
        {
            // copy base class properties.
            foreach (PropertyInfo prop in orderKey.GetType().GetProperties())
            {
                PropertyInfo prop2 = orderKey.GetType().GetProperty(prop.Name);
                prop2.SetValue(this, prop.GetValue(orderKey, null), null);
            }
        }
    }

ConvertOrderKey는 OrderKey를 상속받고 추가로 List를 하나 더 추가하는것이였다.


CopyFromBase라는 메소드를 만들어서 단순히 orderkey에 있는 내용을 전부 클래스에 복사한다.

이렇게 하면


1
2
3
4
5
6
7
8
9
10
11
 public static void ConvertData(ObservableCollection<OrderKey> orderKey)
        {   
            var covertOrderKeyList = new ObservableCollection<ConvertOrderKey>();
            foreach (var item in orderKey)
            {
                ConvertOrderKey cok = new ConvertOrderKey();
                cok.CopyFromBase(item);
                cok.OrderItemList = new List<OrderItem>();
                covertOrderKeyList.Add(cok);
            }
        }
 

이런식으로 기존 Base 클래스 List안에 있는것들에 있는것들을 상속받은 Class로 Copy하고

추가로 OrderITemList값을 지정할수 있다.


참고 : https://social.msdn.microsoft.com/Forums/vstudio/en-US/2105f08f-50ce-47a3-8e2a-3e62634d4cbc/copy-properties-from-base-class-to-derived-class-without-manually-mapping-them?forum=csharpgeneral

'wpf' 카테고리의 다른 글

List Object를 Copy 해보자. (ICloneable)  (0) 2017.07.24
non-ASCII를 없애보자.  (0) 2017.07.21
listbox에서 오른쪽 정렬하고 싶을때  (0) 2017.07.18
[WPF] NavagionManager  (0) 2017.07.17
MVVM Button Click Command 사용법  (0) 2017.07.17
Posted by 동동(이재동)