Neden'XML seri hale getirilebilir sözlükte bir t değil .NET?
XML seri hale getirilebilir bir sözlüğe ihtiyacım var. Aslında, ben şimdi tek gereken iki çok farklı programlar var. Bunu görmek oldukça şaşırdım .NET bir fikri yok. Soruyu başka yerlerde de sordum ve alaycı bir yanıt var. Aptalca bir soru olduğunu anlayamıyorum.
Birisi beni aydınlatmak, verilen nasıl bağımlı çeşitli olabilir .NET özellikleri XML seri hale getirilebilir bir sözlük yok neden XML seri hale getirme. Umarım, bazı insanlar bu aptalca bir soru düşünün açıklıyor. Temel bir şeyi kaçırıyor olmalıyım sanırım ve boşlukları doldurmak için mümkün olacak umuyorum.
CEVAP
Biliyorum bu oldu cevap önce, ama beri bir çok kısa yol (kod) için ne C seri ile DataContractSerializer sınıf (kullanılan XML, ama olabilir ve kullanılmalıdır her yerde) ben dayanamadım katkıda buraya:
public static class SerializationExtensions
{
public static string Serialize<T>(this T obj)
{
var serializer = new DataContractSerializer(obj.GetType());
using (var writer = new StringWriter())
using (var stm = new XmlTextWriter(writer))
{
serializer.WriteObject(stm, obj);
return writer.ToString();
}
}
public static T Deserialize<T>(this string serialized)
{
var serializer = new DataContractSerializer(typeof(T));
using (var reader = new StringReader(serialized))
using (var stm = new XmlTextReader(reader))
{
return (T)serializer.ReadObject(stm);
}
}
}
Bu mükemmel bir şekilde çalışıyor .NET 4 ve de çalışması gerekir .NET henüz test etmedim, ancak 3.5,.
GÜNCELLEME:yokiş .DataContractSerializer
NET Kompakt Çerçeve (hatta Windows için NETCF 3.7 Telefon 7) desteklenmiyor!
Yaptığım akarsu dize çünkü daha uygun bana rağmen bir şeyler yapabilir sunulan bir alt düzey serileştirme Akışı ve kullanılan seri hale getirmek dizeler, ama ben genelleme eğilimi yalnızca gerektiğinde (gibi erken optimizasyon kötü, o yüzden erken genelleme...)
Kullanımı çok basittir:
// dictionary to serialize to string
Dictionary<string, object> myDict = new Dictionary<string, object>();
// add items to the dictionary...
myDict.Add(...);
// serialization is straight-forward
string serialized = myDict.Serialize();
...
// deserialization is just as simple
Dictionary<string, object> myDictCopy =
serialized.Deserialize<Dictionary<string,object>>();
myDictCopy myDict birebir kopyası olacak.
Siz de dikkat edin genel yöntemler temin edebilir hale herhangi bir türü (bildiğim kadarıyla) beri bunlarla sınırlı değildir C arayüzleri, gerçekten herhangi bir genel tür T.
Umarım orada birileri yardımcı olur!
Nasıl üstesinden gelmek için "dat...
Neden XML seri hale getirilebilir sını...
Neden Java seri hale getirilebilir ara...
Neden HttpServlet seri hale getirilebi...
Ne zaman ve neden varlıklar seri hale ...