Tek bir dize olarak RGB renk değerini kodlar aşağıda türü için IXmlSerializable
uygulamak:XmlAttribute olarak özel bir IXmlSerializable nasıl kullanılır?
public class SerializableColor : IXmlSerializable
{
public int R { get; set; }
public int G { get; set; }
public int B { get; set; }
public XmlSchema GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{
var data = reader.ReadString();
reader.ReadEndElement();
var split = data.Split(' ');
R = int.Parse(split[0]);
G = int.Parse(split[1]);
B = int.Parse(split[2]);
}
public void WriteXml(XmlWriter writer)
{
writer.WriteString(R + " " + G + " " + B);
}
}
tek dize olduğundan, ben yer kazanmak için bir özellik olarak saklamak istedi. Ama en kısa sürede benim özelliğine [XmlAttribute]
ekledikçe, aşağıdaki özel durum alıyorum: { ". Tipi SerializableColor üyesi 'Renk' serileştirmez Can XmlAttribute/xmlText türleri IXmlSerializable uygulanması kodlamak için kullanılamaz"}
Bunun bir özellik olarak çalışmasını sağlamanın bir yolu var mı?
Cevabınız için teşekkür ederiz. Yine de iki sorum var. İlk olarak, uygulama nasıl doğru değildir? [Belgede] verilen örnekte olduğu gibi (http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx) (yorum bölümünde açıklanan adendum). Ve ikincisi, örnekle alakalı XmlRoot özniteliğidir? Hangi farklılıklar var? –
Uygulamanın doğru XML üretmemesiyle ilgili olarak, "Çerçeve bir sarıcı eleman yazıyor ve XML yazıcısını başlattıktan sonra konumlandırıyor." Cevabı gözden geçireceğim. Aslında XmlRoot'u XmlSerializer tarafından çıkarılabileceğinden çıkmış olabilirsiniz, ancak bir sınıftaki varsayılan serileştirme davranışını geçersiz kıldığımda, bunu genellikle tüm bileşenleri üzerinde netlik için yapıyorum. – JamieSee
OP reddedilen bir XML özniteliği kimin oluşturduğunu sorduğundan oylama reddedildi. Bir XML öğesi üretmiyor. –