程序中呼叫Class(类)

如何在程序中呼叫你写好的Class(类)。为了实现这些功能,下面做了一个小小的例子。第一步,我们得把呼叫的类写好。

首先写一个interface(接口),这个接口有一个方法Call():

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

 

下面写一个Class(类),它就是主角,是准备程序可以呼叫的类别。类别实作了上面的接口。

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

 

下面分别用三种方式来呼叫类别,第一种,最普通的方法:Author obj = new Author(); 。

MethodA.aspx:

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>

 

MethodA.aspx.cs:

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

 

第二种方法:

MethodB.aspx:

MethidB.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>

 

MethodB.aspx.cs:

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

 

第三种方法,使用的Reflection(反射):

MethodC.aspx:

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>

 

MethodC.aspx.cs:

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

 

三种方法执行的结果:

 

 

posted @ 2011-11-09 13:53  Insus.NET  阅读(963)  评论(0编辑  收藏  举报