অটোম্যাপার: একটি নতুন অবজেক্ট তৈরি না করে সম্পত্তি মান আপডেট করুন


260

নতুন কোনও তৈরি না করে কীভাবে আমি অন্য বস্তুর বৈশিষ্ট্যগুলির মান আপডেট করতে স্বয়ংচালক ব্যবহার করতে পারি?

উত্তর:


456

বিদ্যমান গন্তব্য লাগে যে ওভারলোড ব্যবহার করুন:

Mapper.Map<Source, Destination>(source, destination);

হ্যাঁ, এটি গন্তব্য অবজেক্টটি ফিরিয়ে দেয় তবে এটি অন্য কিছু অস্পষ্ট দৃশ্যের জন্য। এটা একই জিনিস।


28
ধন্যবাদ, জিমি ... আমি উদ্দেশ্যমূলকভাবে অটোম্যাপার থেকে দূরে থাকি কারণ আমার শিডিউলটি প্রভাবিত করে শিখার বক্ররেখার ভয় ছিল। আমি আনুষ্ঠানিকভাবে দুঃখিত আমি এত দিন দূরে ছিলাম ... এটি আমার প্রথম দিকে যা ভাবা হয়েছিল তার চেয়ে অনেক সহজ।
নীল টি।

13
অটোম্যাপারকে সেখানকার সবচেয়ে দরকারী লাইব্রেরি হতে হবে। আমিও অনেক দিন ধরে এড়িয়ে চলেছি, অনেক বেশি দীর্ঘ। আমি আজ এটি ব্যবহার শুরু করেছি এবং এটি ব্যবহার করা কতটা সহজ তা দেখে আমি খুব অবাক হয়েছি।
এমকোটিংহাম

4
আমার জন্য কাজ না। আমি একই ধরণের মানচিত্রের চেষ্টা করি, তবে এটি আবার নতুন অবজেক্টে আসে ব্যবহারকারী u1, u3 = নতুন ব্যবহারকারী (); u1 = নতুন ব্যবহারকারী {আইডি = 1, নিকমনাম = "বামি"}; ব্যবহারকারী u4 = ম্যাপার.ম্যাপ (u1, u3); Assert.AreEqual (u1.Id, u3.Id); Assert.AreEqual (u1.NickName, u3.NickName);
পিটার

7
এফওয়াইআই, আমি আবিষ্কার করেছি যে আপনাকে টাইপ পরামিতি নির্দিষ্ট করার দরকার নেই। সহজভাবে, ম্যাপার.ম্যাপ (উত্স, গন্তব্য) কাজ করবে। সুন্দর এবং সহজ!
এহুদা গ্যাব্রিয়েল হিমাঙ্গো

2
4.2.1 প্রকাশে কি নুল আচরণের পরিবর্তন হয়েছে? আমি দেখছি যে কোনও বস্তুর মধ্যে ম্যাপিং নালটি নাল ফেরায়; যদিও ২.২.১-তে, কোনও বিদ্যমান অবজেক্টে নাল ম্যাপিংয়ের ফলে বিদ্যমান বস্তুটি ফিরে এসেছে।
পিটার ম্যাকভয়

18

এই কাজটি করতে আপনাকে উত্স এবং গন্তব্যের ধরণের জন্য এমনকি সেগুলি একই ধরণের জন্য ক্রিয়েটম্যাপ করতে হবে। এর অর্থ আপনি যদি চান তবে আপনাকে Mapper.Map<User, User>(user1, user2); এই জাতীয় মানচিত্র তৈরি করতে হবে Mapper.Create<User, User>()


1
হা! আমি সবেমাত্র এটি পেয়েছি এবং গৃহীত উত্তরে একটি মন্তব্য যুক্ত করেছি। আপনার ব্যাখ্যা ব্যতিরেকে গৃহীত উত্তরটি সম্পূর্ণ করুন না তবে আমার মন্তব্যের পরে এটি শেষ পর্যন্ত হতে পারে :)
আন্দ্রেজ মার্টিনা

এটি একটি দুর্দান্ত সংযোজন। তবে মূল প্রশ্নটিতে উত্স এবং গন্তব্যের ধরণগুলি উল্লেখ করা হয়নি এবং এগুলি একই ধরণের হওয়ার প্রয়োজন নেই।
jpaugh

4

আপনি যদি স্বীকৃত উত্তরে স্থির পদ্ধতি ব্যবহার না করে আইএমপ্পারের একটি উদাহরণ পদ্ধতি ব্যবহার করতে চান তবে আপনি নিম্নলিখিতটি করতে পারেন (পরীক্ষিত AutoMapper 6.2.2)

IMapper _mapper;
var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Source, Destination>();
});
_mapper = config.CreateMapper();

Source src = new Source
{
//initialize properties
}

Destination dest = new dest
{
//initialize properties
}
_mapper.Map(src, dest);

destsrcএটি ভাগ করা সমস্ত সম্পত্তি মানগুলির সাথে আপডেট করা হবে । এর অনন্য বৈশিষ্ট্যের মানগুলি একই থাকবে।

এখানে সম্পর্কিত উত্স কোড

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.