巫霜代码查看:通过反射获得类的输出DEMO:相关的反射逻辑代码备存

2017-07-16 21:37:48  访问(1687) 赞(0) 踩(0)


  • <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CoreCodeViewDefault.aspx.cs" Inherits="CoreCodeViewDefault"  ValidateRequest="false" %>
    
    <%@ Register Src="~/UserControls/WebNav.ascx" TagPrefix="uc1" TagName="WebNav" %>
    <%@ Register Src="~/UserControls/WebFooter.ascx" TagPrefix="uc1" TagName="WebFooter" %>
    <%@ Register Src="~/UserControls/WebTop.ascx" TagPrefix="uc1" TagName="WebTop" %>
    <%@ Register Src="~/UserControls/WebAdmin.ascx" TagPrefix="uc1" TagName="WebAdmin" %>
    <%@ Register Src="~/UserControls/WebComment.ascx" TagPrefix="uc1" TagName="WebComment" %>
    <!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>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <title>
            <%=WebPageTitle %></title>
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="description" content="<%=MetaDescription %>" />
        <meta name="keywords" content="<%=MetaKeywords %>" />
        <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5)" />
        <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5)" />
        <link href="<%=strPhyPath %>/css/main.css?v=20170131" rel="stylesheet" media="all" />
        <link href="<%=strPhyPath %>/css/tabcss.css" rel="stylesheet" media="all" />
        <link href="<%=strPhyPath %>/css/dltable.css" rel="stylesheet" media="all" />
        <!-- 必须引用的jquery.js文件 -->
    
        <script language="javascript" type="text/javascript" src="<%=strPhyPath %>/JavaScripts/jquery-1.8.3.min.js"></script>
    
        <link href="<%=strPhyPath %>/App_Themes/Common/css/tree.css" rel="stylesheet" type="text/css" />
    
        <script language="javascript" type="text/javascript" src="<%=strPhyPath %>/JavaScripts/Ajax.js"></script>
    
        
        <%=cpi.HeadCode %>
    </head>
    <body>
        <%=VersionHideInfo %>
        <%=cpi.BodyHeadCode %>
        <form id="form1" runat="server">
        <uc1:WebTop runat="server" ID="webTopValue" />
        <uc1:WebNav runat="server" ID="webNavValue" />
        <div id="pagebody">
            <asp:DropDownList ID="ddl_Code" runat="server"></asp:DropDownList> 
            <br />
            <asp:TextBox ID="txt_SQL" runat="server"  TextMode = "MultiLine" Width="98%" Height="200px"></asp:TextBox>
            <br />
            <asp:TextBox ID="txt_Code" runat="server"  TextMode = "MultiLine" Width="98%" Height="400px"></asp:TextBox>
            <br />
            <div class="cleardiv">
            </div>
        </div>
        <uc1:WebFooter runat="server" ID="webFooterValue" EmBllTableV="Code" />
        <uc1:WebAdmin runat="server" ID="webAdminV" Visible="false" />
        </form>
    </body>
    </html>
    <%=cpi.BodyEndCode %>
    
    <script type="text/javascript" language="javascript" src="<%=strPhyPath %>/JavaScripts/jquerynavbutton.js"></script>
    
    <script language="javascript" type="text/javascript">
    
        function CodeOnChange() {
            var theV = document.getElementById("ddl_Code").value;
    
            var ajaxSql = slowxAjax.AjaxSqlClick(theV);
    
            if (ajaxSql != null) {
    
                document.getElementById("<%=this.txt_SQL.ClientID %>").value = ajaxSql.value;  
    
            }
    
            var ajaxCode = slowxAjax.AjaxCodeClick(theV);
    
            if (ajaxCode != null) {
    
                document.getElementById("<%=this.txt_Code.ClientID %>").value = ajaxCode.value;
    
            }
        }
    </script>
    
  • using SlowX.DAL.Helpers;
    using System;
    using System.Collections.Generic;
    using SlowX.WebClass.Classes.Common;
    using SlowX.UrlParams;
    using SlowX.CoreDemo.Demos;
    
    
    [AjaxPro.AjaxNamespace("slowxAjax")]
    public partial class CoreCodeViewDefault :
        SlowXWebPageBase
    {
        /// <summary>  
        ///   
        /// </summary>  
        /// <returns></returns>  
        [AjaxPro.AjaxMethod]
        public string AjaxCodeClick
            (
                string className
            )
        {
    
            try
            {
                BaseLogic bL = SlowX.CoreDemo.Utils.Util.BaseLogicGet(className);
    
                if (bL == null)
                {
                    return "Null";
                }
                else
                {
                    return bL.TheCode;
                }
            }
            catch (Exception err)
            {
                return err.Message;
            }
    
        }
    
        /// <summary>  
        ///   
        /// </summary>  
        /// <returns></returns>  
        [AjaxPro.AjaxMethod]
        public string AjaxSqlClick
            (
                string className
            )
        {
    
            try
            {
                BaseLogic bL = SlowX.CoreDemo.Utils.Util.BaseLogicGet(className);
    
                if (bL == null)
                {
                    return "Null";
                }
                else
                {
                    return bL.TheSQL;
                }
            }
            catch (Exception err)
            {
                return err.Message;
            }
    
        }
    
        /// <summary>
        /// 
        /// </summary>
        protected CodePageItem cpi = null;
    
        /// <summary>
        /// 导航
        /// </summary>
        protected string navLink = "";
    
    
    
        /// <summary>
        /// 绑定控件
        /// </summary>
        /// <param name="listItem"></param>
        /// <param name="up"></param>
        /// <param name="xdbHelper"></param>
        protected void DataBindTheControls
            (
                DBHelper xdbHelper
            )
        {
    
        }
    
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(this.GetType());
    
            WebSiteBLL wi = WebSiteBLL.instance;
    
            List<NavItem> listItem
                =
                new List<NavItem>();
    
            PageUrlParams up
                =
                PageUrlParams.GetPageUrlParams();
    
            listItem.Add
                (
                    new NavItem
                        (
                            "首页",
                            "",
                            strPhyPath + "/"
                        )
                );
    
    
            cpi = new CodePageItem();
    
            List<string> sList = SlowX.CoreDemo.Utils.Util.BaseLogicTypeList();
    
            string className = Request.QueryString["classname"];
    
            foreach (string s in sList)
            {
                ddl_Code.Items.Add(s);
            }
    
            ddl_Code.Attributes["onchange"] = "CodeOnChange()";
    
            if (className != null && className.Length > 0)
            {
                ddl_Code.SelectedValue = className;
            }
            else
            {
                ddl_Code.SelectedIndex = 0;
            }
    
            try
            {
                BaseLogic bL = SlowX.CoreDemo.Utils.Util.BaseLogicGet(ddl_Code.SelectedValue);
    
                if (bL == null)
                {
                    txt_Code.Text = "Null";
                    txt_SQL.Text = "Null";
                }
                else
                {
                    txt_Code.Text = bL.TheCode;
                    txt_SQL.Text = bL.TheSQL;
                }
            }
            catch (Exception err)
            {
                txt_Code.Text = err.Message;
                txt_SQL.Text = err.Message;
            }
    
            DataBindTheControls
                (
                    null
                );
    
    
            webTopValue.SetWebTopTitle
                (
                    "default"
                );
    
    
            webNavValue.SetWebNav
                (
                    SlowX.WebClass.Enums.WebNav.EmWebNav.首页,
                    listItem
                );
    
        }
    }
    
    
  • using SlowX.Core.ICoreClasses;
    using SlowX.CoreDemo.Groups;
    using SlowX.DAL.Helpers;
    using System;
    using System.Collections.Generic;
    
    using System.Text;
    
    
    namespace SlowX.CoreDemo.Demos
    {
        /// <summary>
        /// SlowX.Core的demo的基础逻辑类
        /// </summary>
        [Serializable]
        public class BaseLogic
        {
    
            /// <summary>
            /// SlowX.Core的demo的基础逻辑类
            /// </summary>
            /// <param name="_BaseGroupV"></param>
            public BaseLogic(BaseGroup _BaseGroupV)
            {
                m_BaseGroupV = _BaseGroupV;
            }
    
            /// <summary>
            /// 所属分组
            /// </summary>
            protected BaseGroup m_BaseGroupV = null;
    
            /// <summary>
            /// 所属分组
            /// </summary>
            /// <returns></returns>
            public BaseGroup BaseGroupVGet()
            {
                return m_BaseGroupV;
            }
    
            /// <summary>
            /// 名称|如:WhereAddDateTime
            /// </summary>
            public virtual string TheName
            {
                get
                {
                    return "";
                }
            }
    
            /// <summary>
            /// 关键的输出SQL|如:t.CreateTime = t.UpdateTime
            /// </summary>
            public virtual string KeySQL
            {
                get
                {
                    return "";
                }
            }
    
    
            /// <summary>
            /// 注释|如:Where添加DateTime的等于查询
            /// </summary>
            public virtual string TheComment
            {
                get
                {
                    return "";
                }
            }
    
            /// <summary>
            /// 级别-级别值越高,复杂度越大
            /// </summary>
            public virtual int Star
            {
    
                get
                {
                    return 1;
    
                }
            }
    
    
            /// <summary>
            /// 代码|调用的完整逻辑代码
            /// </summary>
            public string TheCode
            {
                get
                {
                    return TheCodeGet();
                }
            }
    
    
            /// <summary>
            /// SQL语句|打印输出的SQL语句
            /// </summary>
            public string TheSQL
            {
                get
                {
                    return TheSQLGet(null);
                }
            }
    
            #region CallMethodName ~ 方法名
     
    
            /// <summary>
            /// CallMethodName ~ 方法名|包括方法的实现代码
            /// </summary>
            public string CallMethodName
            {
                get
                {
                    return CallMethodNameGet();
                }
                
            }
    
            #endregion CallMethodName ~ 方法名
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="xdbHelper"></param>
            /// <returns></returns>
            protected virtual string TheSQLGet(DBHelper xdbHelper)
            {
                return "";
            }
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="xdbHelper"></param>
            /// <returns></returns>
            protected virtual string TheCodeGet()
            {
                return "";
            }
    
    
            /// <summary>
            /// 调用方法(Method)的逻辑代码
            /// </summary>
            /// <param name="xdbHelper"></param>
            /// <returns></returns>
            protected virtual string CallMethodNameGet()
            {
                return "";
            }
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="strPrintText"></param>
            /// <returns></returns>
            private string ConvertText(string strPrintText)
            {
                if (strPrintText == null)
                    return "";
    
                strPrintText = strPrintText.Replace("&", "&amp;");
                strPrintText = strPrintText.Replace("<", "&lt;");
                strPrintText = strPrintText.Replace(">", "&gt;");
    
                return strPrintText;
            }
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <returns></returns>
            public string TheSQLOutGet()
            {
                return ConvertText(TheSQL);
            }
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <returns></returns>
            public string TheCodeOutGet()
            {
                return ConvertText(TheCode);
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <returns></returns>
            public string TheNameOutGet()
            {
                return ConvertText(TheName);
            }
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <returns></returns>
            public string PageTitleOutGet()
            {
                return ConvertText(TheName + "|" + TheComment);
            }
    
            /// <summary>
            /// 构建树的Title
            /// </summary>
            /// <returns></returns>
            public string TitleBuild()
            {
                //string str = CallMethodName;
    
                //if (str == null || str.Length == 0)
                //    return TheComment;
    
                //return TheComment + "" + '\r' + '\n' + "" + '\r' + '\n'
                //    + str;
                return TheComment;
            }
    
    
            /// <summary>
            /// 
            /// </summary>
            /// <returns></returns>
            public string CallMethodNameOutGet()
            {
                return ConvertText(CallMethodName);
            }
    
        }
    }
    
    
  • using SlowX.Core.ICoreClasses;
    using SlowX.DAL.Helpers;
    using System;
    
    using SlowX.CoreDemo.Groups.ISaveDrivers;
    
    
    namespace SlowX.CoreDemo.Demos.ISaveDrivers 
    {
        /// <summary>
        /// C001
        /// </summary>
        public class C001
            :
            BaseLogic
        {
            /// <summary>
            /// 
            /// </summary>
            public C001()
                :
                base(ISaveDriverGroup.instance)
            {
    
            }
    
            /// <summary>
            /// 
            /// </summary>
            public override string TheName
            {
                get
                {
                    return "AddISaveItem";
                }
            }
    
    
            /// <summary>
            /// 
            /// </summary>
            public override string TheComment
            {
                get
                {
                    return "添加保存语句";
                }
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <returns></returns>
            protected override string CallMethodNameGet()
            {
                return @"
    
            /// <summary>
            /// 添加保存语句 - AddISaveItem +
            /// </summary>
            /// <param name=""_info""></param>
            /// <param name=""_theValue""></param>
            public void AddISaveItem
                (
                    EntityFieldInfo _info,
                    object _theValue
                )
            {
                string _name = _info._Name.ToLower();
    
                if (m_DictionaryISaveItem.ContainsKey(_name))
                {
                    ISaveItem isaveItemValue 
                        = 
                        m_DictionaryISaveItem[_name];
    
                    isaveItemValue.theValue = _theValue;
                }
                else
                {
                    m_DictionaryISaveItem.Add
                        (
                            _name, 
                            new SaveItem(_info, _theValue)
                        );
                }
            }
    ";
            }
    
            /// <summary>
            /// 获得输出的SQL语句
            /// </summary>
            /// <param name="xdbHelper"></param>
            /// <returns></returns>
            protected override string TheSQLGet(DBHelper xdbHelper)
            {
                string theResult = null;
    
                // 标识是否创建或打开数据库链接 //
                bool bIsCreate = true;
    
                if (xdbHelper == null)
                {
                    // 如果 xdbHelper 为null //
                    // 则new一个数据库操作实体 //
                    xdbHelper
                        =
                        SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
                }
                else
                {
                    // 如果 xdbHelper 不为null //
                    // 判断 xdbHelper是否打开链接 //
                    // 相当于是否执行 xdbHelper.OpenDBHelper(); //
                    bIsCreate = xdbHelper.IsNotOpen();
                }
    
                try
                {
                    if (bIsCreate)
                    {
                        // 没有打开,则打开链接 //
                        xdbHelper.OpenDBHelper();
                    }
    
                    // 业务逻辑操作实体 //
                    // insert/update/delete等操作 //
                    SlowX.ExamLib.Business.UTB_EXAM_CLASS
                       bll
                       =
                       SlowX.ExamLib.Business.UTB_EXAM_CLASS.instance;
    
                    // 组合SQL的逻辑实体 //
                    SlowX.ExamLib.Entity.UTB_EXAM_CLASS
                        entity
                        =
                        new ExamLib.Entity.UTB_EXAM_CLASS();
    
    
                    // insert/update的设置值 //
                    ISaveDriver isave = entity;
                    // 查询逻辑 //
                    IQueryDriver iq = entity;
    
                    // 形如:thename = @thename (slowx) // 
                    isave.AddISaveItem(entity._TheName, "slowx");
                    // 形如:id=@id (1) //
                    iq.AddIQueryItemWithEntityFieldInfo(entity._ID, 1);
    
                    // 执行Update操作 //
                    // 这里做DEMO,仅打印输出的SQL语句 //
                    // bll.Update(entity, xdbHelper);
    
                    // 
                    theResult
                        =
                        bll.i_iBuildSQL.BuildSqlUpdate(entity, xdbHelper);
    
    
                    if (bIsCreate)
                    {
                        // 关闭数据库链接 //
                        // 如果用了事务,提交数据库链接 //
                        xdbHelper.EndDBHelper();
                    }
                }
                catch (Exception err)
                {
                    if (bIsCreate)
                    {
                        // 关闭数据库链接 //
                        // 如果用了事务,回滚数据库链接 //
                        xdbHelper.TranDBHelper();
                    }
    
                    throw err;
                }
                finally
                {
                    if (bIsCreate)
                    {
                        // 判断数据库操作是否正确关闭 //
                        // 如果没有正确关闭,则关闭并抛出异常提示代码缺陷 //
                        xdbHelper.FinallyDBHelper();
                    }
                }
    
                return theResult;
            }
    
            protected override string TheCodeGet()
            {
                return @"
    
            /// <summary>
            /// 获得输出的SQL语句
            /// </summary>
            /// <param name=""xdbHelper""></param>
            /// <returns></returns>
            protected override string TheSQLGet(DBHelper xdbHelper)
            {
                string theResult = null;
    
                // 标识是否创建或打开数据库链接 //
                bool bIsCreate = true;
    
                if (xdbHelper == null)
                {
                    // 如果 xdbHelper 为null //
                    // 则new一个数据库操作实体 //
                    xdbHelper
                        =
                        SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
                }
                else
                {
                    // 如果 xdbHelper 不为null //
                    // 判断 xdbHelper是否打开链接 //
                    // 相当于是否执行 xdbHelper.OpenDBHelper(); //
                    bIsCreate = xdbHelper.IsNotOpen();
                }
    
                try
                {
                    if (bIsCreate)
                    {
                        // 没有打开,则打开链接 //
                        xdbHelper.OpenDBHelper();
                    }
    
                    // 业务逻辑操作实体 //
                    // insert/update/delete等操作 //
                    SlowX.ExamLib.Business.UTB_EXAM_CLASS
                       bll
                       =
                       SlowX.ExamLib.Business.UTB_EXAM_CLASS.instance;
    
                    // 组合SQL的逻辑实体 //
                    SlowX.ExamLib.Entity.UTB_EXAM_CLASS
                        entity
                        =
                        new ExamLib.Entity.UTB_EXAM_CLASS();
    
                    // insert/update的设置值 //
                    ISaveDriver isave = entity;
                    // 查询逻辑 //
                    IQueryDriver iq = entity;
    
                    // 形如:thename = @thename (slowx) // 
                    isave.AddISaveItem(entity._TheName, ""slowx"");
                    // 形如:id=@id (1) //
                    iq.AddIQueryItemWithEntityFieldInfo(entity._ID, 1);
    
                    // 执行Update操作 //
                    // 这里做DEMO,仅打印输出的SQL语句 //
                    // bll.Update(entity, xdbHelper);
    
                    // 
                    theResult
                        =
                        bll.i_iBuildSQL.BuildSqlUpdate(entity, xdbHelper);
    
    
                    if (bIsCreate)
                    {
                        // 关闭数据库链接 //
                        // 如果用了事务,提交数据库链接 //
                        xdbHelper.EndDBHelper();
                    }
                }
                catch (Exception err)
                {
                    if (bIsCreate)
                    {
                        // 关闭数据库链接 //
                        // 如果用了事务,回滚数据库链接 //
                        xdbHelper.TranDBHelper();
                    }
    
                    throw err;
                }
                finally
                {
                    if (bIsCreate)
                    {
                        // 判断数据库操作是否正确关闭 //
                        // 如果没有正确关闭,则关闭并抛出异常提示代码缺陷 //
                        xdbHelper.FinallyDBHelper();
                    }
                }
    
                return theResult;
            }
    ";
            }
        }
    }
    
    
  • 
            /// <summary>
            /// 通过ClassName获得BaseLogic
            /// </summary>
            /// <param name="className"></param>
            /// <returns></returns>
            public static BaseLogic BaseLogicGet(string className)
            {
                try
                {
    
                    Assembly ass = typeof(Util).Assembly;
    
    
                    return ass.CreateInstance(className) as BaseLogic;
    
                }
                catch
                {
                    return null;
                }
            }
    
    
    
            /// <summary>
            /// 获得BaseLogic的ClassName的列表
            /// </summary>
            /// <returns></returns>
            public static List<string> BaseLogicTypeList()
            {
                try
                {
                    List<string> theResult = new List<string>();
    
                    Assembly ass = typeof(Util).Assembly;
    
                    Type[] tA = ass.GetTypes();
                    Type tB = typeof(BaseLogic);
    
                    foreach (Type t in tA)
                    {
                        if (t == null)
                            continue;
    
                        if (t == tB)
                            continue;
    
                        if (!IsBaseType(t, tB))
                        {
                            continue;
                        }
    
                        theResult.Add(t.FullName);
                    }
    
                    return theResult;
                }
                catch
                {
                    return null;
                }
    
            }
    
            /// <summary>
            /// 是否
            /// </summary>
            /// <param name="t"></param>
            /// <param name="tB"></param>
            /// <returns></returns>
            protected static bool IsBaseType(Type t, Type tB)
            {
                while (t != null)
                {
                    if (t == tB)
                        return true;
    
                    t = t.BaseType;
                }
    
                return false;
            }
    
    

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)