मुझे नहीं पता कि यह आवश्यक है कि आपको क्या करना चाहिए, लेकिन यहां कुछ ऐसा है जो आप कर सकते हैं: SetAll या SetMany बनाएं या जो भी तरीका आप अपनी कक्षा (स्रोत) के किसी अन्य उदाहरण में पास करते हैं। प्रत्येक प्रॉपर्टी की जांच करें और यदि यह गैर-शून्य है, तो आप गंतव्य ऑब्जेक्ट का प्रॉपर्टी वैल्यू स्रोत ऑब्जेक्ट के प्रॉपर्टी वैल्यू पर सेट करते हैं। ध्यान दें कि यह रणनीति शून्य प्रकारों पर निर्भर करेगी, और मान लीजिए कि आप एक नए सेटर विधि में पारित शून्य मानों को अनदेखा कर सकते हैं। यहां एक उदाहरण दिया गया है:
using System;
namespace BlogPartialUpdateTrick
{
public class SomeClass
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? HeightInches { get; set; }
public DateTime? Dob { get; set; }
public void SetAll(SomeClass source)
{
this.FirstName = source.FirstName ?? this.FirstName;
this.LastName = source.LastName ?? this.LastName;
this.HeightInches = source.HeightInches ?? this.HeightInches;
this.Dob = source.Dob ?? this.Dob;
}
public override string ToString()
{
return String.Format("fn: {0}, ln: {1}, height: {2}, DOB: {3}", FirstName ?? String.Empty, LastName ?? String.Empty,
HeightInches.HasValue ? HeightInches.Value.ToString() : "null", Dob.HasValue ? Dob.Value.ToShortDateString() : "null");
}
}
}
इस पहले कोड नमूने में, हमारे पास मेरी स्पिफी क्लास SomeClass है। इसमें 4 गुण हैं, जिनमें से सभी शून्य हैं। इस वर्ग का उल्लेखनीय हिस्सा SetAllMethod है जहां मैं एक स्रोत ऑब्जेक्ट में पास कर सकता हूं जो कि SomeClass टाइप भी है। यह इस पैरामीटर के गुण मान को स्रोत पैरामीटर में दिए गए मानों पर सेट करता है, लेकिन केवल तभी होता है जब वे नॉन-नल हों। यहाँ एक 2 कोड blurb जहां मैं इस सामान का उपयोग कर रहा है:
using System;
using System.Windows.Forms;
namespace BlogPartialUpdateTrick
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var destination = new SomeClass() { FirstName = "Freddy", LastName = "Fingers", Dob = DateTime.Parse("01/01/1970"), HeightInches = 72 };
var source = new SomeClass() { FirstName = null, LastName="Flippers", Dob = null, HeightInches = 80 };
destination.SetAll(source);
MessageBox.Show(destination.ToString());
}
}
}
एक गंतव्य वस्तु, एक स्रोत ऑब्जेक्ट बनाएँ, नई विधि, देखा कहते हैं!
"fn:, जन्म तिथि 80: फ्रेडी, ln: फ़्लिपर थे, जिनमें ऊंचाई 1970/01/01" आउटपुट यह है
बस ओवरलोडिंग का उपयोग करें, पैरामीटर – Coder1409
@ कोडर 140 9 इंस्टेंस विधि के रूप में अपडेट करने के लिए दो फ़ील्ड के साथ एक ही विधि बनाएं या इसे स्थिर विधि बनाएं ?? क्योंकि अगर मैं पैरामीटर के साथ ओवरलोड बनाने का निर्णय लेता हूं तो उन पैरामीटर पहले से ही ऑब्जेक्ट का हिस्सा हैं !! –
आपको मौजूदा विधि का उपयोग करना चाहिए। ऐसा लगता है कि यह बहुत अधिक काम है लेकिन यह वास्तव में कम है। आपकी कक्षा एक अवधारणा को समाहित करती है और उस वस्तु की स्थिति बदलती है भले ही आप एक ही संपत्ति बदलते हैं। सभी गुणों का उपयोग करके अद्यतन करने से आप अपडेट से पहले उन सभी को जान सकेंगे और यह एक अच्छा प्रतिबंध है। – boosts