Você está offline; aguardando reconexão

Erro: Uma exceção BadImageFormatException pode ocorrer quando você usa uma restrição recursivamente definido de um tipo genérico em um aplicativo baseado no .NET Framework 2.0

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 940164
Sintomas
Em um aplicativo baseado no .NET Framework 2.0 no Microsoft, você usa uma restrição recursivamente definido de um tipo genérico. Quando você fizer isso, uma exceção BadImageFormatException pode ocorrer em tempo de execução. Esse problema ocorre apenas em determinados cenários.
Causa
Esse problema ocorre devido a um problema nos componentes do Microsoft Visual Studio 2005 common language runtime (CLR 2.0).
Como Contornar
Para contornar este problema, remova a restrição de classe do GetClass estático E <e> pública método.

Observação Restrições são limites que são colocados em parâmetros de tipo genérico.

Para remover a restrição de classe a GetClass estático E <e> pública método, alterar a assinatura do método da seguinte maneira.

Código existente

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

Código de substituição

public static E GetClass<E>() where E : new()
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais Informações
Para obter mais informações sobre os genéricos do CLR, visite o seguinte site da Web Microsoft Developer Network (MSDN):

Etapas para reproduzir o problema

  1. Em um computador que tenha instalado o Visual Studio 2005, crie o seguinte programa translation from VPE for Csharp.
    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. Compilar o programa e, em seguida, execute o programa. A exceção BadImageFormatException ocorre em tempo de execução quando o método c2.GetClass1 é chamado.

Warning: This article has been translated automatically

Propriedades

ID do Artigo: 940164 - Última Revisão: 07/30/2007 18:30:14 - Revisão: 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 KbMtpt
Comentários
>