Mapster C# (.NET): पूर्ण गाइड उदाहरणों के साथ
Mapster .NET इकोसिस्टम में ऑब्जेक्ट-टू-ऑब्जेक्ट मैपिंग (object-to-object mapping) के लिए एक हाई-परफॉर्मेंस लाइब्रेरी है। यह एक टाइप के ऑब्जेक्ट को दूसरे टाइप में स्वचालित रूप से बदलने की सुविधा देती है, जिससे डेवलपर को प्रॉपर्टी कॉपी करने का रूटीन कोड लिखने से छुटकारा मिलता है। AutoMapper जैसे भारी-भरकम टूल्स के विपरीत, Mapster स्पीड और कम मेमोरी उपयोग पर फोकस करता है, जो कई बेंचमार्क्स में साबित हो चुका है।
ऑब्जेक्ट मैपिंग की ज़रूरत क्यों है? रियल प्रोजेक्ट्स में हमें अक्सर डेटा बदलना पड़ता है: DTO (Data Transfer Object) को Entity में, ViewModel को Model में, Model को Response में, और भी बहुत कुछ। हर फील्ड को मैन्युअली कॉपी करना उबाऊ, गलतियों से भरा और कोड मेंटेनेंस को मुश्किल बनाता है। Mapster एक सरल, लचीला और तेज़ API प्रदान करके इस समस्या को हल करता है।
Mapster मैपिंग कोड को कंपाइल टाइम पर (Roslyn एनालाइज़र्स के ज़रिए) या डायनामिक एक्सप्रेशन कंपाइलेशन का उपयोग करके जनरेट करता है। यह इसे .NET में सबसे तेज़ मैपर्स में से एक बनाता है, जो कई मामलों में मैन्युअल कॉपी से भी आगे निकल जाता है। लाइब्रेरी जटिल सीनारियो को सपोर्ट करती है: नेस्टेड ऑब्जेक्ट्स, कलेक्शन, कंडीशनल मैपिंग, फील्ड इग्नोर करना, अलग-अलग टाइप्स के लिए एडॉप्टर, और भी बहुत कुछ।
इंस्टॉलेशन
Mapster को NuGet Package Manager के ज़रिए इंस्टॉल करें। पैकेज मैनेजर कंसोल में नीचे दिए गए कमांड में से कोई एक चलाएँ:
dotnet add package Mapster
या Package Manager Console से:
Install-Package Mapster
ASP.NET Core और डिपेंडेंसी इंजेक्शन (DI) के साथ काम करने के लिए, एक अतिरिक्त पैकेज इंस्टॉल करने की सलाह दी जाती है:
dotnet add package Mapster.DependencyInjection
इंस्टॉल करने के बाद, अपनी फ़ाइल की शुरुआत में using Mapster; जोड़ें।
त्वरित शुरुआत
एक सरल उदाहरण देखते हैं: हमारे पास User क्लास (डेटाबेस मॉडल) और UserDto क्लास (क्लाइंट को भेजने के लिए) है।
using Mapster;
// मूल क्लास
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public DateTime CreatedAt { get; set; }
}
// लक्ष्य क्लास
public class UserDto
{
public int Id { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
}
// उपयोग का उदाहरण
public class Program
{
public static void Main()
{
var user = new User
{
Id = 1,
Name = "राहुल शर्मा",
Email = "rahul@example.com",
CreatedAt = DateTime.Now
};
// Mapster से मैपिंग
var dto = user.Adapt<UserDto>();
Console.WriteLine($"Id: {dto.Id}, Name: {dto.FullName}, Email: {dto.Email}");
// आउटपुट: Id: 1, Name: राहुल शर्मा, Email: rahul@example.com
}
}
ध्यान दें: Name प्रॉपर्टी स्वचालित रूप से FullName से मैप हो गई, क्योंकि Mapster डिफ़ॉल्ट रूप से नाम से मिलान ढूँढता है (केस-इनसेंसिटिव)। अगर UserDto में Name प्रॉपर्टी होती, तो वह भी मैप हो जाती।
मुख्य तरीके और क्लासेस
अब Mapster के प्रमुख तरीकों को देखते हैं। हर एक के लिए सिग्नेचर, विवरण और उदाहरण दिया गया है।
1. Adapt<TDestination>(object source)
सिग्नेचर: public static TDestination Adapt<TDestination>(this object source)
विवरण: एक ऑब्जेक्ट को दूसरे में मैप करने का बेसिक एक्सटेंशन मेथड। TDestination का एक नया इंस्टेंस बनाता है और source से प्रॉपर्टी वैल्यू कॉपी करता है।
var user = new User { Id = 1, Name = "प्रिया" };
var dto = user.Adapt<UserDto>();
Console.WriteLine(dto.FullName); // आउटपुट: प्रिया पुस्तकालय में भी
PHP पर ईमेल भेजना: PHPMailer लाइब्रेरी के लिए पूर्ण गाइड
C++ में रिएक्टिव प्रोग्रामिंग: लाइब्रेरीज़ और व्यावहारिक उपयोग
Kotlin पर GraphQL: सर्वर-साइड डेवलपमेंट के लिए लाइब्रेरी और टूल्स का अवलोकन
Kotlin में CSV के साथ कार्य: लाइब्रेरीज़ और कोड उदाहरण