【ASHX调用ASPX.cs或aspx.cs调用aspx.cs】的一个方法或函数

在ASHX内调用ASPX.cs的一个方法或函数

接口 ISayable cs:

点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// ISayable 的摘要说明
/// </summary>
/// 
namespace Insus.NET
{
    public interface ISayable
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
        string Say(string name);
    }
}
a.aspx.cs
点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class a : System.Web.UI.Page,ISayable
{
    public static int i = 0;
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public string Say(string name)
    {
        return "hi" + name;
    }
}
b.ashx
点击查看代码
<%@ WebHandler Language="C#" Class="b" %>

using System;
using System.Web;
using System.Web.Compilation;
using System.Web.UI;
using Insus.NET;

public class b : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        string virtuaPath = "~/a.aspx";
        Type type = BuildManager.GetCompiledType(virtuaPath);
        Page a = (Page)Activator.CreateInstance(type);
        string s = ((ISayable)a).Say("nihao");
        HttpContext.Current.Response.Write(s);
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}
【接口】PageA.aspx.cs中调用PageB.aspx.cs内的方法,或是反过来,PageB.aspx.cs中想去调用PageA.aspx.cs内的方法

PageA.aspx.cs

点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Compilation;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class PageA : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string virtuaPath = "~/PageB.aspx";
        Type type = BuildManager.GetCompiledType(virtuaPath);
        Page a = (Page)Activator.CreateInstance(type);
        ((ISayable)a).Say("nihao");
    }

}
PageB.aspx.cs
点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class PageB : System.Web.UI.Page,ISayable

{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public void Say(string name)
    {
        HttpContext.Current.Response.Write(name);
    }
}
【反射】PageC.aspx.cs中调用PageB.aspx.cs内的方法,或是反过来,PageB.aspx.cs中想去调用PageC.aspx.cs内的方法

PageC.aspx.cs

点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Compilation;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;

public partial class PageC : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string virtuaPath = "~/PageB.aspx";
        Type type = BuildManager.GetCompiledType(virtuaPath);
        MethodInfo mi = type.GetMethod("Say");
            
        Page b = (Page)Activator.CreateInstance(type);
        mi.Invoke(b, new object[] { "Insus.NET" });

    }
}
PageB.aspx.cs,使用反射,b中就可以不用接口
点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class PageB : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public void Say(string name)
    {
        HttpContext.Current.Response.Write(name);
    }
}
https://www.cnblogs.com/insus/p/3656800.html
posted @ 2025-01-24 15:34  wenhongshen  阅读(22)  评论(0)    收藏  举报