反射笔记

 首先新建反射类库

 1、命名空间:WitbankData

 2、类名:WitbankData

方法: public void Other(string accountName, string password, out int i)

具体代码如下

namespace WitbankData
{
    public class WitbankData
    {
        public static System.Web.HttpCookie MyCookieUser = new System.Web.HttpCookie("SetCookieUser");
        /// <summary>
        /// 登录方法
        /// </summary>
        /// <param name="accountName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="i">返回参数: 0 对不起,帐户名或密码错误!  1 登录成功  2您的账号尚未开放请先进行身份认证</param>
        public void Other(string accountName, string password, out int i)
        {
            int valueType = 0;
            //获取数据
            using (DataSet ds1 = GetData(accountName, password))
            {
                if (ds1.Tables[0].Rows.Count > 0)
                {

                    if (int.Parse(ds1.Tables[0].Rows[0]["Status"].ToString()) == 0)
                    {
                        //您的账号尚未开放请先进行身份认证!
                        valueType = 2;
                    }
                    else
                    {
                        SetCookieUser("UserID", ds1.Tables[0].Rows[0]["UserID"].ToString());
                        SetCookieUser("Account", ds1.Tables[0].Rows[0]["AccountName"].ToString());
                        SetCookieUser("UserName", ds1.Tables[0].Rows[0]["UserName"].ToString());
                        SetCookieUser("UserStructureID", ds1.Tables[0].Rows[0]["StructureID"].ToString());
                        SetCookieUser("StationNameIng", ds1.Tables[0].Rows[0]["StationName"].ToString());
                        SetCookieUser("yhjf", ds1.Tables[0].Rows[0]["Enumerable"].ToString());
                        SetCookieUser("Business", ds1.Tables[0].Rows[0]["Business"].ToString());
                        SetCookieUser("UserMark", ds1.Tables[0].Rows[0]["UserMark"].ToString());

                        SetCookiesa();
                        //登录成功
                        valueType = 1;
                    }
                }
                else
                {
                    //  '对不起,帐户名或密码错误!
                    valueType = 0;
                }
            }

            i = valueType;
        }
        /// <summary>
        /// 查询数据
        /// </summary>
        /// <param name="accountName">用户名</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        public DataSet GetData(string accountName, string password)
        {
            string Sql = "select * from Users where AccountName = '" + accountName.ToString().Replace("'", "'") + "' and LoginPassword = '" + password.ToString().Replace("'", "'").Trim() + "'";
            using (SqlConnection conn = new SqlConnection("server=(local);User ID=sa;Password=happy;database=Elearning;Connection Reset=FALSE;Max Pool Size =512;"))//ConfigurationManager.ConnectionStrings["WitBank"].ConnectionString))
            {

                conn.Open();

                using (SqlCommand cmd = conn.CreateCommand())
                {
                    DataSet ds1 = new DataSet();
                    cmd.CommandText = Sql;

                    SqlDataAdapter adapter = new SqlDataAdapter();

                    adapter.SelectCommand = cmd;


                    adapter.Fill(ds1);
                    ds1.Dispose();
                    return ds1;
                }
            }
        }
        /// <summary>
        /// 写Cookie
        /// </summary>
        /// <param name="name"></param>
        /// <param name="val"></param>
        public void SetCookieUser(string name, string val)
        {
            try
            {
                MyCookieUser.Expires = DateTime.Now.AddDays(1);
                MyCookieUser[name] = System.Web.HttpContext.Current.Server.UrlEncode(val);
                System.Web.HttpContext.Current.Response.Cookies.Add(MyCookieUser);
            }
            catch
            {
                //System.Web.HttpContext.Current.Response.Write("errot--.");
            }
        }

        public void SetCookiesa()
        {
            try
            {
                HttpCookie MyCookie = new HttpCookie("LastVisita");
                DateTime now = DateTime.Now;
                MyCookie["UserID"] = GetCookiesUser("UserID").ToString();
                System.Web.HttpContext.Current.Response.Cookies.Add(MyCookie);
            }
            catch
            {

            }
        }
        public string GetCookiesUser(string name)
        {
            try
            {
                HttpCookie aa = System.Web.HttpContext.Current.Request.Cookies["SetCookieUser"];
                if (aa.Values[name] != null)
                {
                    return System.Web.HttpContext.Current.Server.UrlDecode(aa.Values[name]);
                }
                else
                {
                    return "";
                }
            }
            catch
            {
                return "";
            }
        }
        /// <summary>
        /// 获取有效时间
        /// </summary>
        /// <returns></returns>
        public bool GetDate()
        {
            bool types = false;
            if (DateTime.Now < DateTime.Parse("2013-09-09"))
            {
                types = true;
            }
            return types;
        }
        public void GetCheck(out bool type)
        {
            bool types = false;
            if (DateTime.Now < DateTime.Parse("2013-09-09"))
            {
                types = true;
            }
            type = types;
        }

    }
}

  

 反射调用:

   private void Sub()
    {

        try
        {
            string path = System.Web.HttpContext.Current.Server.MapPath("").ToString() + "\\bin\\WitbankData.dll";//@"D:\Documents\Visual Studio 2008\Projects\localhost8022 (2)\WitbankData\bin\Debug\WitbankData.dll";

            Assembly ass;
            Type type;
            object obj;
            if (File.Exists(path))
            {
                //获取并加载DLL类库中的程序集
                ass = Assembly.LoadFile(path);

                //获取类的类型:必须使用名称空间+类名称
                type = ass.GetType("WitbankData.WitbankData");

                //获取类的方法:方法名称
                MethodInfo Other = type.GetMethod("Other");

                //对获取的类进行创建实例。//必须使用名称空间+类名称
                obj = ass.CreateInstance("WitbankData.WitbankData");

                //开始搜索方法
                Other = type.GetMethod("Other");//方法的名称1

                //定义数组,注:数组长度是3,当前只对前两个进行复制,第三个是返回参数
                object[] parts = new object[3];
                parts[0] = username.Text.ToString();//用户名
                parts[1] = password.Text.ToString();//密码

                //方法的调用
                //注:如果调用的DLL类库中方法是静态的,那么Invoke方法中第一个参数传值为NULL。
                //    如果方法不是静态的,那么Invoke方法中第一个参数传值为 obj(上面那个被实例的对象)
                Other.Invoke(obj, parts);
                //返回值
                int returnValue = (int)parts[2];

                // //您的账号尚未开放请先进行身份认证!
                if (returnValue == 2)
                {
                    Page.RegisterStartupScript("Error", "<script>alert('您的账号尚未开放请先进行身份认证!');win_linkb();</script>");
                }
                else if (returnValue == 0)
                {
                    //'对不起,帐户名或密码错误
                    Page.RegisterStartupScript("Error", "<script>alert('对不起,帐户名或密码错误!')</script>");
                }
                else if (returnValue == 3)
                {
                    Page.RegisterStartupScript("Error", "<script>alert('对不起,系统已过期!')</script>");
                }
                if (returnValue == 1)
                {
                    Page.Response.Redirect("user/index.aspx");
                }

            }
        }

        catch (Exception ee)
        {

            Page.RegisterStartupScript("Errorr", "<script>alert('数据库故障或网络不正常请稍后重试!')</script>");
        }
    }

  

原文地址:https://www.cnblogs.com/happygx/p/2797855.html