.NET'lerle çalışırken çok garip bir sorun yaşıyorum XmlSerializer.
Aşağıdaki örnek sınıfları alın:
public class Order
{
public PaymentCollection Payments { get; set; }
//everything else is serializable (including other collections of non-abstract types)
}
public class PaymentCollection : Collection<Payment>
{
}
public abstract class Payment
{
//abstract methods
}
public class BankPayment : Payment
{
//method implementations
}
AFAIK, InvalidOperationExceptionserileştiricinin türetilmiş Payment.
1. ekleme XmlIncludeiçin Paymentsınıf tanımı:
Bu, üzerinde hiçbir kontrole sahip olmadığım dış referanslar olarak dahil edilen tüm sınıflar nedeniyle mümkün değil.
2. Türetilmiş türlerin türlerini, XmlSerializerörneğin oluşturulması sırasında iletme
Çalışmıyor.
3. XmlAttributeOverridesÖzelliğin varsayılan serileştirmesini geçersiz kılmak için hedef özelliği tanımlama ( bu SO yazısında açıklandığı gibi )
Ayrıca çalışmaz ( XmlAttributeOverridesaşağıdaki başlatma).
Type bankPayment = typeof(BankPayment);
XmlAttributes attributes = new XmlAttributes();
attributes.XmlElements.Add(new XmlElementAttribute(bankPayment.Name, bankPayment));
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
overrides.Add(typeof(Order), "Payments", attributes);
Daha XmlSerializersonra uygun kurucu kullanılacaktır.
NOT: ile çalışmıyor demek istediğim InvalidOperationException( BankPaymentbeklenmiyordu ... ) atıldı.
Biri konuya biraz ışık tutabilir mi? Sorun nasıl devam eder ve daha fazla hata ayıklanır?