Fehler: Eine Ausnahme BadImageFormatException auftreten, wenn Sie eine rekursiv definierte Einschränkung eines generischen Typs in eine .NET Framework 2.0-basierten Anwendung verwenden

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 940164
Problembeschreibung
In einer Microsoft .NET Framework 2.0-basierte Anwendung verwenden Sie eine rekursiv definierte Einschränkung eines generischen Typs. Wenn Sie dies tun, kann eine BadImageFormatException Ausnahme zur Laufzeit auftreten. Dieses Problem tritt nur in bestimmten Szenarios.
Ursache
Dieses Problem tritt wegen eines Problems in der Microsoft Visual Studio 2005 common Language Runtime (CLR 2.0)-Komponenten.
Abhilfe
Um dieses Problem zu umgehen, entfernen Sie die Klasseneinschränkung aus der öffentliche statische E GetClass <e>-Methode.

Hinweis: Einschränkungen sind Beschränkungen, die auf generische Typparameter abgelegt werden.

Um die Class-Einschränkung aus der Entfernen öffentliche statische E GetClass <e>-Methode, ändern Sie die Signatur der Methode wie folgt.

Vorhandener code

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

Neuer code

public static E GetClass<E>() where E : new()
Status
Microsoft hat bestätigt, dass dies einen Fehler in den Microsoft-Produkten ist, die im Abschnitt "Gilt für" aufgeführt sind.
Weitere Informationen
Weitere Informationen zu Generika in der CLR die folgenden Microsoft Developer Network (MSDN)-Website:

Schritte zum Reproduzieren des Problems

  1. Erstellen Sie auf einem Computer, auf dem Visual Studio 2005 installiert ist das folgende C#-Programm. mithilfe von
    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. Kompilieren Sie das Programm, und führen Sie das Programm. BadImageFormatException -Ausnahme tritt zur Laufzeit, wenn die c2.GetClass1 -Methode aufgerufen wird.

Eigenschaften

Artikelnummer: 940164 – Letzte Überarbeitung: 07/30/2007 18:30:14 – Revision: 1.0

Microsoft .NET Framework 2.0, Microsoft Visual Studio 2005 Standard Edition, Microsoft Visual Studio 2005 Professional Edition, Microsoft Visual Studio 2005 Express Edition

  • kbmt kbbug kbtshoot KB940164 KbMtde
Feedback