如何在程序中呼叫你写好的Class(类)。为了实现这些功能,下面做了一个小小的例子。第一步,我们得把呼叫的类写好。
首先写一个interface(接口),这个接口有一个方法Call():
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for ICallable
/// </summary>
namespace Insus.NET
{
public interface ICallable
{
void Call();
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for ICallable
/// </summary>
namespace Insus.NET
{
public interface ICallable
{
void Call();
}
}
下面写一个Class(类),它就是主角,是准备程序可以呼叫的类别。类别实作了上面的接口。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for Author
/// </summary>
namespace Insus.NET
{
public class Author : ICallable
{
string _name;
public Author( string name)
{
this._name = name;
}
public void Call()
{
HttpContext.Current.Response.Write( " Hello, " + _name);
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for Author
/// </summary>
namespace Insus.NET
{
public class Author : ICallable
{
string _name;
public Author( string name)
{
this._name = name;
}
public void Call()
{
HttpContext.Current.Response.Write( " Hello, " + _name);
}
}
}
下面分别用三种方式来呼叫类别,第一种,最普通的方法:Author obj = new Author(); 。
MethodA.aspx:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
MethodA.aspx.cs
"
Inherits
=
"
MethodA
"
%>
<! 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 ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
<! 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 ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
MethodA.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 MethodA : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
Author objAuthor = new Author( " Insus.NET. ");
objAuthor.Call();
}
}
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 MethodA : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
Author objAuthor = new Author( " Insus.NET. ");
objAuthor.Call();
}
}
第二种方法:
MethodB.aspx:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
MethodB.aspx.cs
"
Inherits
=
"
MethodB
"
%>
<! 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 ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
<! 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 ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
MethodB.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 MethodB : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
Type oType = typeof(Author);
Author objAuthor = (Author)Activator.CreateInstance(oType, new object[] { " Insus.NET. " });
objAuthor.Call();
}
}
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 MethodB : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
Type oType = typeof(Author);
Author objAuthor = (Author)Activator.CreateInstance(oType, new object[] { " Insus.NET. " });
objAuthor.Call();
}
}
第三种方法,使用的Reflection(反射):
MethodC.aspx:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
MethodC.aspx.cs
"
Inherits
=
"
MethodC
"
%>
<! 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 ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
<! 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 ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
MethodC.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.Reflection;
using Insus.NET;
public partial class MethodC : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
string classFullName = " Insus.NET.Author ";
Assembly assembly = Assembly.Load( " App_Code ");
Type objType = assembly.GetType(classFullName);
ICallable obj = (ICallable)Activator.CreateInstance(objType, new object[] { " Insus.NET. " });
obj.Call();
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
using Insus.NET;
public partial class MethodC : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
string classFullName = " Insus.NET.Author ";
Assembly assembly = Assembly.Load( " App_Code ");
Type objType = assembly.GetType(classFullName);
ICallable obj = (ICallable)Activator.CreateInstance(objType, new object[] { " Insus.NET. " });
obj.Call();
}
}
三种方法执行的结果:
http://www.cnblogs.com/insus/archive/2011/11/09/2242410.html