Teď jste offline a čekáte, až se znova připojí internet.

Chyba: Výjimka BadImageFormatException může dojít při použití rekurzivně definována omezení obecného typu v aplikaci založené na rozhraní .NET Framework 2.0

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:940164
Příznaky
V Microsoft aplikace založené na rozhraní .NET Framework 2.0 použít rekurzivně definována omezení obecného typu. Když toto provedete, může dojít BadImageFormatException výjimka za běhu. K tomuto problému dochází pouze v určitých scénářích.
Příčina
K tomuto problému dochází z důvodu problému v Microsoft Visual Studio 2005 komponenty společného jazykového modulu runtime (CLR 2.0).
Jak potíže obejít
Tento problém vyřešit, odeberte omezení třídy z Veřejné statické E GetClass <e> metodu.

Poznámka: Omezení jsou omezení umístit na parametry obecného typu.

Odebrat omezení třídy z Veřejné statické E GetClass <e> metodu, způsobem změnit podpis metody.

Existující kód

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

Náhradní kód

public static E GetClass<E>() where E : new()
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Další informace
Další informace o generics CLR na webu Microsoft Developer Network (MSDN):

Postup reprodukce problému

  1. V počítači má Visual Studio 2005 vytvořte následující program C#.
    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. Zkompilujte program a potom spusťte program. Výjimka BadImageFormatException dochází při spuštění, kdy je volána metoda c2.GetClass1.

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 940164 - Poslední kontrola: 07/30/2007 18:30:14 - Revize: 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 KbMtcs
Váš názor