Hata: genel türde bir özyinelemeli olarak tanımlanan kısıtlaması .NET Framework 2.0 tabanlı bir uygulama kullandığınızda BIR BadImageFormatException özel durumu oluşabilir

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

Bu Sayfada

Belirtiler

Microsoft .NET Framework 2.0 tabanlı bir uygulama, genel türde bir özyinelemeli olarak tanımlanan kısıtlaması kullanın. Bunu yaptığınızda, BadImageFormatException bir özel durum, çalıştırma sırasında oluşabilir. Bu sorun belirli senaryolarda ortaya çıkar.

Neden

Bu sorun, Microsoft Visual Studio 2005 ortak dil çalışma zamanı (CLR 2.0) bileşenleri, bir sorun nedeniyle oluşur.

Pratik Çözüm

Bu soruna geçici bir çözüm bulmak için <a0></a0>, sınıf kısıtlaması kaldırmak ortak statik E GetClass <e> yöntemi.

Not Genel tür parametreleri yerleştirilir sınırları kısıtlamaları var.

Sınıf kısıtlaması kaldırmak için ortak statik E GetClass <e> yöntemi, yöntem imzası aşağıdaki gibi değişir.

Varolan bir kodu

public static E GetClass<E>() where E : class, new()

Değiştirilecek kodu

public static E GetClass<E>() where E : new()

Durum

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

Daha fazla bilgi

CLR içinde tutabilen hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn.microsoft.com/msdnmag/issues/06/00/NET/default.aspx

Sorunu Yeniden Oluşturma Adımları

  1. Visual Studio 2005 yüklü olan bir bilgisayarda, aşağıdaki C# program oluşturun.
    using System;
    
    public abstract class AbstractClass1<E> where E : AbstractClass1<E>, new()
    { }
    
    public class Class1 : AbstractClass1<Class1>
    { }
    
    public class Class2<E> where E : AbstractClass1<E>, new()
    {
        public E GetClass1()
        {
            return Factory.GetClass<E>();
        }
    }
    
    public class Factory
    {
        public static E GetClass<E>() where E : class, new()
        {
            return new E();
        }
    }
    
    public class Program
    {
        static void Main()
        {
            Console.WriteLine("Hit enter to continue..");
            Console.ReadLine();
            Class2<Class1> c2 = new Class2<Class1>();
            c2.GetClass1();
            Console.WriteLine("Hi");
        }
    }
    
  2. Programı derlemek ve programı çalıştırın. BadImageFormatException özel durum, çalıştırma sırasında c2.GetClass1 yöntemi çağrıldığında ortaya çıkar.

Özellikler

Makale numarası: 940164 - Last Review: 30 Temmuz 2007 Pazartesi - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 2.0
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional
  • Microsoft Visual Studio 2005 Express Edition
Anahtar Kelimeler: 
kbmt kbbug kbtshoot KB940164 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:940164

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