現在オフラインです。再接続するためにインターネットの接続を待っています

お使いのブラウザーはサポートされていません

このサイトを利用するには、ブラウザーを更新する必要があります。

Internet Explorer を最新バージョンに更新する

[BUG] でジェネリック型の定義に再帰的に制約を使用すると、BadImageFormatException 例外が発生する可能性がありますは。NET Framework 2.0 ベースのアプリケーション

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:940164
現象
マイクロソフトでは。NET Framework 2.0 ベースのアプリケーションでは、ジェネリック型の定義に再帰的に制約を使用します。この操作を行う場合は、 BadImageFormatException 実行時に例外が発生する可能性があります。この問題は、特定の状況でのみ発生します。
原因
この問題は Microsoft Visual Studio 2005年の共通言語ランタイム (CLR 2.0) コンポーネントに問題が原因で発生します。
回避策
この問題を回避するには、クラスの制約を削除する、 パブリックの静的 E GetClass<e></e> メソッドです。

メモ 制約は、ジェネリック型パラメーターに置かれる制限です。

クラスの制約を削除するのには パブリックの静的 E GetClass<e></e> メソッドは、メソッドのシグネチャは次のとおりに変更します。

既存のコード

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

置換コード

public static E GetClass<E>() where E : new()
状況
Microsoft では、この「対象」に記載されているマイクロソフト製品のバグとして認識しています。
詳細
CLR のジェネリックの詳細については、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。

問題の再現手順

  1. Visual Studio 2005年がインストールされたコンピューターでは、次の 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. プログラムをコンパイルし、プログラムを実行します。は、 BadImageFormatException 実行時例外が発生した場合に、 c2。GetClass1 メソッドが呼び出されます。

警告: この記事は自動翻訳されています

プロパティ

文書番号:940164 - 最終更新日: 08/10/2011 13:31:00 - リビジョン: 3.0

  • kbtshoot kbbug kbmt KB940164 KbMtja
フィードバック
if?DI=4050&did=1&t=">tps://c.microsoft.com/ms.js"> >text/javascript' src='" + (window.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");