Следующий код компилируется как в VS2013 и VS2015, для различных версий .NET Framework от 2.0 до 4.6.1, но при выполнении бросает System.TypeLoadException:Очень простой код компилируется, но выбрасывает TypeLoadException при выполнении
namespace Test
{
struct Foo<T>
{
}
struct Bar<U>
{
Foo<Bar<U>> foo;
}
class Program
{
static void Main(string[] args)
{
var x = new Bar<int>();
}
}
}
Но если Foo или Bar изменены из структуры в класс, она запускается. Я пытаюсь понять, почему это не работает для двух структур. Почему этот код не работает?
Сообщение Исключение:
"System.TypeLoadException occurred Message: A first chance exception of type 'System.TypeLoadException' occurred in mscorlib.dll Additional information: Could not load type 'Test.Bar`1' from assembly 'scratch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'."
Возможный дубликат [генериков, используемых в структуры против класса] (HTTP: // StackOverflow .com/вопросы/13731798/generics-used-in-struct-vs-class) – MethodMan
Что такое сообщение TypeLoadException? –
Сообщение об исключении: «Возникло событие System.TypeLoadException Сообщение: Первое исключение исключения типа« System.TypeLoadException »произошло в mscorlib.dll Дополнительная информация: Не удалось загрузить тип« Test.Bar'1 »из сборки, Версия = 1.0.0.0, Культура = нейтраль, PublicKeyToken = null '. " –