İçeriğe geç

C# ile AutoMapper Hazırlama

Nesnelerimiz ile çalışırken vekil tipler sık kullandığımız bir yapıdır. Veriyi sunum katmanına taşıyıcı rolündeki bu tipler genellikle orjinal entity nesnesinin biraz kırpılmış hali veya biraz daha ekleme yapılmış hali olarak karşımıza çıkar. Burada gerçek entity nesnemizin içindeki verileri aynen vekil bir tipe taşımak isteyeceğimiz durumlar olabilir. Bu durumda hali hazırdaki AutoMapper yapısını kullanabilir veya kendiniz hazırlayabilirsiniz.

        public static P ObjectMap<T, P>(this T objParam, P outParam) where T : class, new()
        {
            Type type = objParam.GetType();
            PropertyInfo[] arrPropertInfo = type.GetProperties();
            Type typeOut = typeof(P);

            PropertyInfo propertyInfo;
            object value;

            foreach (PropertyInfo ItemPropertyInfo in arrPropertInfo)
            {
                value = ItemPropertyInfo.GetValue(objParam, null);
                propertyInfo = typeOut.GetProperties().Where(p => p.Name == ItemPropertyInfo.Name).FirstOrDefault();

                if (propertyInfo != null)
                    propertyInfo.SetValue(outParam, value);
            }
            return outParam;
        }

tipindeki nesnemiz orjinal entity nesnemizi temsil ediyor ve tipindeki nesnemiz veri taşıyıcı nesnemizi temsil eder. Burada basit bir senaryo ile nasıl kullanacağımızı inceleyebiliriz.

Örneğin Person tipinde bir entity nesnemiz olsun ve ilgili property alanları için değer atayalım.

            Person person = new Person()
            {
                Id = 1,
                Name = "Nazım",
                Surname = "Demir",
                MailAdress = "nazim.demir@yahoo.com"
            };

Görüldüğü gibi Person tipi içinde 4 adet property mevcuttur ve şimdi veri taşıyıcı nesnemizi içinde sadece 2 tane property(Name, Surname) olacak şekilde hazırlayalım. Sonrada orjinal entity nesnemizden map etme işlemi yapalım.

            dtoPerson _dtoPerson = new dtoPerson();
            _dtoPerson = person.ObjectMap<Person, dtoPerson>(_dtoPerson);

            Console.WriteLine(string.Format("{0} {1}", _dtoPerson.Name, _dtoPerson.Surname));
            Console.ReadLine();

Örnek uygulamayı buradan indirebilirsiniz. Mutlu kodlamalar 🙂

Tarih:C#

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.