Düzeltme: beklenmeyen bir sonuç, .NET Framework 2.0 numeration özniteliğinde seri hale getirmek için XmlSerializer sınıfı kullandığınızda XmlSerializer sınıfı oluşturur

Makale çevirileri Makale çevirileri
Makale numarası: 943175 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

XmlSerializer sınıfı, Microsoft .NET Framework 2.0, XML numeration öznitelik seri hale getirmek için sınıf XmlSerializer ' ı kullandığınızda, beklenmeyen bir sonuç üretir.

Örneğin, seri hale getirme sonucu aşağıdaki olmasını beklediğiniz:
<myThing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Scott">
  <MyString xsi:nil="true" /> 
  <OptionC xsi:nil="true"/> 
</myThing>
Ancak gerçek şu sonucudur:
<myThing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Scott">
  <MyString xsi:nil="true"/> 
</myThing>

Çözüm

Düzeltme bilgileri

Desteklenen bir düzeltme Microsoft'tan edinilebilir. Ancak, düzeltmenin yalnızca bu makalede anlatılan sorunu gidermesi amaçlanmıştır. Düzeltmeyi yalnızca bu sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, bu düzeltmeyi içeren bir sonraki .NET Framework 2.0 hizmet paketini beklemenizi öneririz.

Bu sorunu hemen çözmek için, düzeltmeyi edinmek üzere Microsoft Müşteri Destek Hizmetleri'ne başvurun. Microsoft Müşteri Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

ÖNKOŞULLAR

Bu düzeltmeyi uygulamak için .NET Framework 2.0 olması gerekir.

Yeniden başlatma gereksinimi

Bu düzeltmeyi uyguladıktan sonra bilgisayarı yeniden başlatmanız gerekmez.

Düzeltme Değiştirme Bilgileri

Bu düzeltme başka bir düzeltmenin yerini almaz.

DOSYA BİLGİLERİ

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki tarih ve saat öğesinde saat dilimi sekmesini kullanın.
Bu tabloyu kapaBu tabloyu aç
Dosya AdıDosya SürümüDosya BoyutuTARİHSAATPlatform
System.xml.dll2.0.50727.9342,031,61630-09-200703: 45X86

Durum

Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır.

Daha fazla bilgi

Terimler için daha fazla bilgi yazılım güncelleştirmesi, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
824684Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Sorunu Yeniden Oluşturma Adımları

  1. Visual Studio 2005'i başlatın.
  2. Create a blank C# project by using the following code:
    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                string outfile = ".\\MyTest.xml";
                myThing mt = new myThing();
                mt.mystring = null;
                mt.ItemElementName = myThing.ItemChoiceType.OptionC;
                mt.item = null;
                mt.itemSpecified = true;
                XmlSerializer ser = new XmlSerializer(typeof(myThing));
                XmlTextWriter wtr = new XmlTextWriter(outfile, Encoding.UTF8);
                ser.Serialize(wtr, mt);
                wtr.Flush();
                wtr.Close();
            }
        }
    
        [XmlRoot(Namespace = "urn:Scott")]
        public class myThing
        {
            [XmlElement("MyString", IsNullable = true)]
            public string mystring;
    
            [XmlChoiceIdentifier("ItemElementName")]
            [XmlElement(ElementName = "OptionA", Type = typeof(object), IsNullable = true)]
            [XmlElement(ElementName = "OptionB", Type = typeof(object), IsNullable = true)]
            [XmlElement(ElementName = "OptionC", Type = typeof(object), IsNullable = true)]
            [XmlElement(ElementName = "OptionD", Type = typeof(object), IsNullable = true)]
            public object item;
    
            [XmlIgnore]
            public bool itemSpecified;
            [XmlIgnore]
            public ItemChoiceType ItemElementName;
            [XmlType(Namespace = "urn:Scott", IncludeInSchema = false, AnonymousType = false)]
            public enum ItemChoiceType
            {
                [XmlEnum("OptionA")]
                OptionA,
                [XmlEnum("OptionB")]
                OptionB,
                [XmlEnum("OptionC")]
                OptionC,
                [XmlEnum("OptionD")]
                OptionD
            }
        }
    }
    
  3. Oluşturmak ve bu uygulamayı çalıştıracak.
MyTest.xml dosyasını görüntülediğinizde, "Belirtiler" bölümünde açıklanan sorunu görürsünüz.

Özellikler

Makale numarası: 943175 - Last Review: 20 Kasım 2007 Salı - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 2.0
Anahtar Kelimeler: 
kbmt kbexpertiseadvanced kbpubtypekc kbqfe kbhotfixserver KB943175 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:943175

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com