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);
}