Lets assume, we have following simple webform page with single button:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.Pages.Tr.WebForm1" %>
<asp:Button runat="server" OnClick="btn_Click" />
And codebehind:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
/*some behavior*/
}
protected void btn_Click(object sender, EventArgs e)
{
/*some behavior*/
}
}
Now, lets assume we have some special customer, who requires some additional special actions when clicking button.
I would like to achieve it by writing inherited class – something like:
public class SpecialWebForm : WebForm1
{
override void btn_Click(object sender, EventArgs e)
{
base.btn_Click(object sender, EventArgs e);
/*special behavior*/
}
}
Is it possible to dynamically select implementation of codebehind class? To make somewhere something like:
if (IsSpecial(CurrentClient))
{
WebForm1.CodeBehind = new SpecialWebForm();
}
or something like that?