Step: 2 Code
Base Class: Person.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Reflection;
/// <summary>
/// Summary description for Person
/// </summary>
//Constructors
public class Person
{
protected string firstname, lastname, strManager;
public string strConstr; string getInfo; MemberInfo mi;
public Person()
{
strConstr = " constructor with no parameter";
}
public Person(string firstname, string lastname, MemberInfo mi)
{
strConstr = " constructor accepts two parameters";
this.firstname = firstname;
this.lastname = lastname;
this.mi = mi;
}
public Person(string firstname, string lastname)
{
strConstr = " constructor accepts two parameters";
this.firstname = firstname;
this.lastname = lastname;
}
public virtual string person_name()
{
string str = " <font color='red' > " + mi.Name + " </font> " +
this.firstname + " " + this.lastname;
return str;
}
public string m_name()
{
/// Get info on Manager class
Type myManager = typeof(Manager);
MemberInfo manager_info = typeof(Manager);
if (manager_info.Equals(myManager))
{
getInfo = manager_info.Name + " MetaDataToken : " +
manager_info.MetadataToken.ToString() + " Verified";
}
return ( this.firstname + " " + this.lastname + " " + this.getInfo);
}
public string e_name()
{
Type myEmp = typeof(Employee);
MemberInfo emp_info = typeof(Employee);
// Employee class
if (emp_info.Equals(myEmp))
{
getInfo = emp_info.Name + " MetaDataToken " +
emp_info.MetadataToken.ToString() + " Verified";
}
return (this.firstname + " " + this.lastname + " " + this.getInfo);
}
}
Derived Class: Manager.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Reflection;
/// <summary>
/// Summary description for Manager
/// </summary>
public class Manager:Person
{
protected string fn, ln; protected MemberInfo mi;
public Manager()
{
}
public Manager(string fn, string ln):base(fn,ln)
{
this.fn = fn;
this.ln = ln;
}
public Manager(string fn, string ln, MemberInfo mi):base(fn,ln,mi )
{
this.fn = fn;
this.ln = ln;
this.mi = mi;
}
public string manager_specific()
{
Person ps = new Person(this.fn, this.ln);
string local = ps.strConstr +"<br/> <font color='Green'>" +
ps.m_name()+ "</font>";
return local;
}
public override string person_name()
{
return base.person_name();
}
}
Derived Class:Employee.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Reflection;
/// <summary>
/// Summary description for Employee
/// </summary>
public class Employee:Person
{
protected string fn, ln;
public Employee():base()
{
//
// TODO: Add constructor logic here
//
}
//using base key word
public Employee(string firstname, string lastname):base(firstname,
lastname)
{
this.fn = firstname;
this.ln = lastname;
}
//
public Employee(string firstname, string lastname, MemberInfo
mi):base(firstname, lastname, mi)
{
this.fn = firstname;
this.ln = lastname;
}
public override string person_name()
{
return base.person_name();
}
public string emp_specific()
{
MemberInfo mi = typeof(Employee);
Person ps = new Person(this.fn, this.ln);
string local = ps.strConstr + "<br/> <font color='Green'>" +
ps.e_name() + "</font>";
return local;
}
}
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" Debug="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>mm.Polymorphism2: Virtual/Override Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="L1" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Reflection;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
L1.Text += "<br/>-------- Using person_name method()";
//Type myEmp = typeof(Employee);
MemberInfo emp_info = typeof(Employee);
Employee emp = new Employee("Mary", "McDonald",emp_info);
L1.Text += "<br/>Display Employee's FullName : " + emp.person_name();
//Type myManager = typeof(Manager);
MemberInfo manager_info = typeof(Manager);
Manager manager = new Manager("John", "Smith",manager_info);
L1.Text += "<br/>Display Manager's FullName : " +
manager.person_name();
L1.Text += "<br/>----------Using specific methods()";
L1.Text += "<br/> Display Manager's FullName " +
manager.manager_specific();
L1.Text += "<br/>Display Employee's FullName " + emp.emp_specific();
}
}