आप इस के लिए reflection उपयोग कर सकते हैं।
आपका परिदृश्य इस तरह कुछ हद तक दिख सकता है:
static void Main(string[] args)
{
var list = new List<Mammal>();
list.Add(new Person { Name = "Filip", DOB = DateTime.Now });
list.Add(new Person { Name = "Peter", DOB = DateTime.Now });
list.Add(new Person { Name = "Goran", DOB = DateTime.Now });
list.Add(new Person { Name = "Markus", DOB = DateTime.Now });
list.Add(new Dog { Name = "Sparky", Breed = "Unknown" });
list.Add(new Dog { Name = "Little Kid", Breed = "Unknown" });
list.Add(new Dog { Name = "Zorro", Breed = "Unknown" });
foreach (var item in list)
Console.WriteLine(item.Speek());
list = ReCalculateDOB(list);
foreach (var item in list)
Console.WriteLine(item.Speek());
}
आप कहाँ चाहते हैं सभी स्तनधारियों की जन्मदिन फिर से गणना करने के लिए। और इसके बाद के संस्करण के क्रियान्वयन इस तरह देख रहे हैं:
internal interface Mammal
{
string Speek();
}
internal class Person : Mammal
{
public string Name { get; set; }
public DateTime DOB { get; set; }
public string Speek()
{
return "My DOB is: " + DOB.ToString() ;
}
}
internal class Dog : Mammal
{
public string Name { get; set; }
public string Breed { get; set; }
public string Speek()
{
return "Woff!";
}
}
तो बुनियादी तौर पर आप क्या करने की जरूरत Relfection, जो प्रकार की जाँच करें और है कि रन समय में की तरह प्रकार के गुण और अन्य चीजें पाने के लिए एक mechanizm है उपयोग करने के लिए है । यहां एक उदाहरण दिया गया है कि आप डीओबी प्राप्त करने वाले प्रत्येक स्तनधारी के लिए उपर्युक्त डीओबी में 10 दिन कैसे जोड़ते हैं।
static List<Mammal> ReCalculateDOB(List<Mammal> list)
{
foreach (var item in list)
{
var properties = item.GetType().GetProperties();
foreach (var property in properties)
{
if (property.PropertyType == typeof(DateTime))
property.SetValue(item, ((DateTime)property.GetValue(item, null)).AddDays(10), null);
}
}
return list;
}
बस याद रखें कि प्रतिबिंब का उपयोग धीमी गति से हो सकता है, और यह आम तौर पर धीमी है। बहुत जल्दी जवाब और उस प्रश्न का सूचकों के लिए
My DOB is: 2010-03-22 09:18:12
My DOB is: 2010-03-22 09:18:12
My DOB is: 2010-03-22 09:18:12
My DOB is: 2010-03-22 09:18:12
Woff!
Woff!
Woff!
My DOB is: 2010-04-01 09:18:12
My DOB is: 2010-04-01 09:18:12
My DOB is: 2010-04-01 09:18:12
My DOB is: 2010-04-01 09:18:12
Woff!
Woff!
Woff!
स्रोत
2010-03-22 08:18:29
किस तरह से समायोजित करें? –
कई घंटे जोड़ें। – Chin