Javascript 从js或aspx调用通用处理程序

Javascript 从js或aspx调用通用处理程序,javascript,c#,generics,httphandler,Javascript,C#,Generics,Httphandler,我有一个泛型处理程序,定义如下 public class ExporterHandler<TFactory, TRequest, TResult> 我当然会出错 有没有办法通过js或c传递泛型参数 目前的实现相当困难 protected void Button_Download_Click(object sender, EventArgs e) { var type = this.Page.GetType(); while (!type.IsGenericType)

我有一个泛型处理程序,定义如下

public class ExporterHandler<TFactory, TRequest, TResult>
我当然会出错

有没有办法通过js或c传递泛型参数

目前的实现相当困难

protected void Button_Download_Click(object sender, EventArgs e)
{
    var type = this.Page.GetType();
    while (!type.IsGenericType)
    {
        type = type.BaseType;
    }

    var pageArguments = type.GetGenericArguments();

    var handlerType = Assembly.GetExecutingAssembly()
        .GetTypes()
        .Where(x => x.FullName.Contains("ExporterHandler"))
        .Single()
        .MakeGenericType(pageArguments);

    var handler = (IHttpHandler)Activator.CreateInstance(handlerType);

    handler.ProcessRequest(this.Context);
}

由于您可能无法从JavaScript中访问实际类型,因此我想授权调用是您能做的最好的事情。不过有一件事:与其使用反射来查找
ExporterHandler
,您只需执行
typeof(ExporterHandler)。MakeGenericType(pageArguments)
@poke谢谢您的建议
protected void Button_Download_Click(object sender, EventArgs e)
{
    var type = this.Page.GetType();
    while (!type.IsGenericType)
    {
        type = type.BaseType;
    }

    var pageArguments = type.GetGenericArguments();

    var handlerType = Assembly.GetExecutingAssembly()
        .GetTypes()
        .Where(x => x.FullName.Contains("ExporterHandler"))
        .Single()
        .MakeGenericType(pageArguments);

    var handler = (IHttpHandler)Activator.CreateInstance(handlerType);

    handler.ProcessRequest(this.Context);
}