泥庭

2011年5月24日

System.BadImageFormatException

Filed under: .NET — タグ: — yone64 @ 9:34 PM

突然、恐ろしい例外が発生したのでメモメモ。

で、とりあえず再現コード。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (var item in new Sub().Hoge2())
            {
                Console.WriteLine(item);
            }
        }
    }

    class Super<T>
    {
        public virtual IEnumerable<string> Hoge1(T t)
        {
            yield return "a";
            yield return "b";
        }
    }

    class Sub : Super<string>
    {
        public IEnumerable<string> Hoge2()
        {
            foreach (var item in base.Hoge1("a"))
            {
                yield return item;
            }
            yield return "c";
            yield return "d";
        }
    }
}

今わかっている再現条件は、以下の通り。

  • yield return のあるメソッド内で基底クラスのyield returnのあるメソッドを呼ぶ
    • ただし対象のメソッドがvirtual修飾されていること。
  • 基底クラスのメソッドには型パラメータの引数が必要

とりあえず、コネクト行きかなぁ。

1件のコメント »

  1. 上記はVS2010で発生します。VS2012では修正されていました。
    そういや、コネクトに投げたとき、次のバージョンで直すよって返事もらった気がします。

    コメント by yone64 — 2013年7月3日 @ 12:09 AM


RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。