巫霜代码查看:通过反射获得类的输出DEMO:相关的反射逻辑代码备存
2017-07-16 21:37:48 访问(1689) 赞(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("&", "&");
strPrintText = strPrintText.Replace("<", "<");
strPrintText = strPrintText.Replace(">", ">");
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;
}
上一条:
下一条:
相关评论
发表评论