GetOriginalTypeParameterType lanza la referencia de objeto no establecida a una instancia de una excepción de objeto

Referencia:¿Cómo se puede usar una dinámica como genérica?

public void CheckEntity(int entityId, string entityType = null)
{
 dynamic AnyObject = Activator.CreateInstance("Assembly","Assembly.Models.DbModels." + entityType).Unwrap();
 CheckWithInference(AnyObject, entityId);
}

private static void CheckWithInference<T>(T ignored, int entityId) where T : class
{
 Check<T>(entityId);
}

private static void Check<T>(int entityId) where T : class
{
 using (var gr = new GenericRepository<T>())
 {
 }
}

Esto entra conCheckEntity(16,"Container");. Después de la primera línea corre,AnyObject se convierte en blancoAssembly.Models.DbModels.Container cuando se inspecciona con el depurador. Sivar AnyType = AnyObject.GetType(); es usado, entoncesAnyType muestra comoAssembly.Models.DbModels.Container. Sin embargo, cuando la llamada aCheckWithInference(AnyObject, entityId); Se hace una excepción se lanza.

exterior: referencia de objeto no establecida en una instancia de un objeto.interno: Microsoft.CSharp.RuntimeBinder.SymbolTable.GetOriginalTypeParameterType (Tipo t) +10

Hice un ejemplo autocontenido aquí, pero se ejecuta sin error :(

Nota, esto está en asp.net mvc 3 c #

HomeController.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace InferenceExample.Controllers
{
public class HomeController : Controller
{
    //
    // GET: /Home/

    public ActionResult Index()
    {
        return View();
    }

    public void CheckEntity(int entityId, string entityType = null)
    {
        dynamic AnyObject = Activator.CreateInstance("InferenceExample", "InferenceExample.Models." + entityType).Unwrap();
        CheckWithInference(AnyObject, entityId);
    }

    private static void CheckWithInference<T>(T ignored, int entityId) where T : class
    {
        Check<T>(entityId);
    }

    private static void Check<T>(int entityId) where T : class
    {
        var repo = new List<T>();
    }

}
}

Ejemplo.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace InferenceExample.Models
{
public class Example
{
    public int ExampleId { get; set; }
    public string Name { get; set; }
}
}

Index.cshtml

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

@Html.ActionLink("Start", "CheckEntity", new { entityId = 16, entityType = "Example" })

Estoy en una pérdida. ¿Por qué estoy recibiendo esta excepción? No pude reproducirlo fácilmente. No estoy seguro de qué más incluir en el ejemplo, ya que esto es todo lo que el código real tiene en él.

La parte realmente confusa es que en la aplicación, cuando se produce esta excepción, la acción falla. Sin embargo, al volver a visitar la página e intentar una segunda vez, no se produce ninguna excepción.

Respuestas a la pregunta(1)

Su respuesta a la pregunta