मुझे ईमानदारी से पता नहीं है कि ऑटोमैपर ऐसा करेगा (क्योंकि मैं ऑटोमैपर का अधिक उपयोग नहीं करता), लेकिन मुझे पता है कि प्रोटोबफ-नेट उन दोनों पैटर्न का समर्थन करता है, ताकि आप Serializer.ChangeType<,>(obj)
का उपयोग उनके बीच फ़्लिप करने के लिए कर सकें।
वर्तमान संस्करण, सदस्यों पर विशेषताओं (जैसे [XmlElement(Order = n)]
) पर निर्भर होने पर बहुत निर्भर है - मुझे नहीं पता कि इससे कोई समस्या क्यों आती है? प्रगति में संस्करण वेनिला प्रकारों (गुणों के बिना) का समर्थन करता है, लेकिन यह अभी तक पूरा नहीं हुआ है (लेकिन जल्द ही)।
उदाहरण:
[XmlType]
public class Foo
{
[XmlElement(Order=1)]
public int? Value { get; set; }
}
[XmlType]
public class Bar
{
[XmlElement(Order = 1)]
public int Value { get; set; }
[XmlIgnore]
public bool ValueSpecified { get; set; }
}
static class Program
{
static void Main()
{
Foo foo = new Foo { Value = 123 };
Bar bar = Serializer.ChangeType<Foo, Bar>(foo);
Console.WriteLine("{0}, {1}", bar.Value, bar.ValueSpecified);
foo = new Foo { Value = null };
bar = Serializer.ChangeType<Foo, Bar>(foo);
Console.WriteLine("{0}, {1}", bar.Value, bar.ValueSpecified);
bar = new Bar { Value = 123, ValueSpecified = true };
foo = Serializer.ChangeType<Bar, Foo>(bar);
Console.WriteLine(foo.Value);
bar = new Bar { Value = 123, ValueSpecified = false };
foo = Serializer.ChangeType<Bar, Foo>(bar);
Console.WriteLine(foo.Value);
}
}
स्रोत
2010-03-09 12:20:36
मुझे लगता है कि यह http://valueinjecter.codeplex.com/documentation में मदद कर सकता है, आपको int int int के लिए केवल मैपिंग एल्गोरिदम निर्दिष्ट करना होगा? एक बार और जो कुछ भी आपको चाहिए, उसके लिए इसका उपयोग करें, आपको – Omu