- 浏览: 726658 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1081)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (0)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (0)
- [网站分类]4.其他技术区 (0)
- [网站分类]5.企业信息化 (0)
- [网站分类]6.读书心得区(技术书籍阅读心得、书籍推荐) (0)
- [网站分类]7.提问区(.NET技术方面的提问) (2)
- [网站分类]8.技术转载区(.NET技术文章转载, 请注明原文出处) (0)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [网站分类]Dottext区 (0)
- [网站分类]GIS技术 (0)
- [网站分类]IT英才专区(IT职场交流) (0)
- [网站分类]SharePoint (0)
- [网站分类]博客园.NET俱乐部(俱乐部组织与活动方面的文章) (0)
- [网站分类]软件发布区(发布自己开发的代码、软件) (0)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (0)
- [网站分类]业界新闻 (1)
- 技术 (1)
- [随笔分类]生活感悟 (10)
- [随笔分类]C# (30)
- [随笔分类]AjaxPro教程 (3)
- [发布至博客园首页] (5)
- [随笔分类]简历 (0)
- [随笔分类]Linux (2)
- [随笔分类]技术聚会 (2)
- [随笔分类]ORM (1)
- [随笔分类]php (1)
- [随笔分类]创业 (1)
- [随笔分类]奇技淫巧 (1)
- [随笔分类]计划 (1)
- [随笔分类]架构&分层 (1)
- [随笔分类]整合行销 (1)
- [随笔分类]mac (1)
- [网站分类].NET新手区 (45)
- [网站分类]非技术区 (5)
- [网站分类]招聘区 (0)
- [随笔分类]单元测试 (1)
- [网站分类]其他技术区 (3)
- [网站分类]代码与软件发布 (6)
- [网站分类]提问区 (24)
- [随笔分类]ASP.NET (2)
- [随笔分类]FAQ (12)
- [随笔分类]开发人员工具 (1)
- [随笔分类]朗志轻量级项目管理解决方案 (1)
- [网站分类]读书区 (1)
最新评论
-
天使建站:
写和乱七八糟的 不知道从哪复制过来的 还是看这里吧j ...
jquery数组 -
hyn450:
你好,我最近也想了解一下竞争情报。不知道能不能交流一下呢 ?
最近的工作 -
lattimore:
这个连接打不开了阿!
使用vnc连ubuntu desktop -
MZhangShao:
奉劝你一句,以后在Ubuntu 用apt-get安装成功的软件 ...
关于xrdp的安装设置 -
f002489:
strftime
python下datetime类型的转换
接着上次在《朗志轻量级项目管理解决方案》中对Aspect的改进,
注意,这里我们实现了IXmlSerialization接口,以实现自定义的反序列化操作,还应注意的是在反串行的过程中,这里我们使用了一个自已实现的深拷贝DeepCopy
注意,这里我们实现了IXmlSerialization接口,以实现自定义的反序列化操作,还应注意的是在反串行的过程中,这里我们使用了一个自已实现的深拷贝DeepCopy
public class AspectCollection:CollectionBase,IXmlSerializable
{
public AspectCollection()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void Add(AspectItem ai)
{
this.InnerList.Add(ai);
}
public new AspectItem this[int index]
{
get
{
return this.InnerList[index] as AspectItem;
}
set
{
this.InnerList[index]=value;
}
}
IXmlSerializable 成员#region IXmlSerializable 成员
public void WriteXml(XmlWriter writer)
{
// TODO: 添加 AspectCollection.WriteXml 实现
foreach(AspectItem ai in this.InnerList)
{
writer.WriteStartElement("Aspect");
writer.WriteAttributeString("","type","",ai.Type);
writer.WriteAttributeString("","deploy-model","",ai.DeployModel);
writer.WriteAttributeString("","pointcut-type","",ai.PointCutType);
writer.WriteAttributeString("","action-position","",ai.ActionPosition);
ai.Rules.WriteXml(writer);
writer.WriteEndElement();
}
}
public System.Xml.Schema.XmlSchema GetSchema()
{
// TODO: 添加 AspectCollection.GetSchema 实现
return null;
}
public void ReadXml(XmlReader reader)
{
// TODO: 添加 AspectCollection.ReadXml 实现
base.Clear();
reader.MoveToContent();
AspectCollection ac=new AspectCollection();
RuleCollection rc=new RuleCollection();
AspectItem ai=new AspectItem();
while(reader.Read())
{
if (reader.IsStartElement("Aspect"))
{
ai=new AspectItem();
rc.Clear();
reader.MoveToAttribute("type");
ai.Type=reader.Value;
reader.MoveToAttribute("deploy-model");
ai.DeployModel=reader.Value;
reader.MoveToAttribute("pointcut-type");
ai.PointCutType=reader.Value;
reader.MoveToAttribute("action-position");
ai.ActionPosition=reader.Value;
this.Add(ai);
continue;
}
if (reader.IsStartElement("Rule"))
{
RuleItem ri=new RuleItem();
reader.MoveToAttribute("type");
ri.type=reader.Value;
reader.MoveToAttribute("match");
ri.match=reader.Value;
rc.Add(ri);
ai.Rules=rc.DeepCopy();
}
}
}
这里我使用了.net内置的序列化功能{
public AspectCollection()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void Add(AspectItem ai)
{
this.InnerList.Add(ai);
}
public new AspectItem this[int index]
{
get
{
return this.InnerList[index] as AspectItem;
}
set
{
this.InnerList[index]=value;
}
}
IXmlSerializable 成员#region IXmlSerializable 成员
public void WriteXml(XmlWriter writer)
{
// TODO: 添加 AspectCollection.WriteXml 实现
foreach(AspectItem ai in this.InnerList)
{
writer.WriteStartElement("Aspect");
writer.WriteAttributeString("","type","",ai.Type);
writer.WriteAttributeString("","deploy-model","",ai.DeployModel);
writer.WriteAttributeString("","pointcut-type","",ai.PointCutType);
writer.WriteAttributeString("","action-position","",ai.ActionPosition);
ai.Rules.WriteXml(writer);
writer.WriteEndElement();
}
}
public System.Xml.Schema.XmlSchema GetSchema()
{
// TODO: 添加 AspectCollection.GetSchema 实现
return null;
}
public void ReadXml(XmlReader reader)
{
// TODO: 添加 AspectCollection.ReadXml 实现
base.Clear();
reader.MoveToContent();
AspectCollection ac=new AspectCollection();
RuleCollection rc=new RuleCollection();
AspectItem ai=new AspectItem();
while(reader.Read())
{
if (reader.IsStartElement("Aspect"))
{
ai=new AspectItem();
rc.Clear();
reader.MoveToAttribute("type");
ai.Type=reader.Value;
reader.MoveToAttribute("deploy-model");
ai.DeployModel=reader.Value;
reader.MoveToAttribute("pointcut-type");
ai.PointCutType=reader.Value;
reader.MoveToAttribute("action-position");
ai.ActionPosition=reader.Value;
this.Add(ai);
continue;
}
if (reader.IsStartElement("Rule"))
{
RuleItem ri=new RuleItem();
reader.MoveToAttribute("type");
ri.type=reader.Value;
reader.MoveToAttribute("match");
ri.match=reader.Value;
rc.Add(ri);
ai.Rules=rc.DeepCopy();
}
}
}
using System;
using System.Xml.Serialization;
namespace Langzhi.Aspect
{
/**//// <summary>
/// AspectItem 的摘要说明。
/// </summary>
[Serializable()]
public class AspectItem
{
public AspectItem()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private string m_Type;
private string m_DeployModel;
private string m_PointCutType;
private string m_ActionPosition;
private RuleCollection m_RuleCollection;
// private string m_ID;
private string m_AssemblyName;
private string m_ClassName;
[XmlAttribute("type")]
public string Type
{
get
{
return this.m_Type;
}
set
{
this.m_Type=value;
}
}
[XmlAttribute("deploy-model")]
public string DeployModel
{
get
{
return this.m_DeployModel;
}
set
{
this.m_DeployModel=value;
}
}
[XmlAttribute("pointcut-type")]
public string PointCutType
{
get
{
return this.m_PointCutType;
}
set
{
this.m_PointCutType=value;
}
}
[XmlAttribute("action-position")]
public string ActionPosition
{
get
{
return this.m_ActionPosition;
}
set
{
this.m_ActionPosition=value;
}
}
// [XmlAttribute("id")]
// public string ID
// {
// get
// {
// return this.m_ID;
// }
// set
// {
// this.m_ID = value;
// }
//
// }
[NonSerialized()]
public string ID;
[NonSerialized()]
public string AssemblyName;
[NonSerialized()]
public string ClassName;
[NonSerialized()]
public IAspect SingletonAspect;
public RuleCollection Rules
{
get
{
return this.m_RuleCollection;
}
set
border-right: #808080 1px solid;
using System.Xml.Serialization;
namespace Langzhi.Aspect
{
/**//// <summary>
/// AspectItem 的摘要说明。
/// </summary>
[Serializable()]
public class AspectItem
{
public AspectItem()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private string m_Type;
private string m_DeployModel;
private string m_PointCutType;
private string m_ActionPosition;
private RuleCollection m_RuleCollection;
// private string m_ID;
private string m_AssemblyName;
private string m_ClassName;
[XmlAttribute("type")]
public string Type
{
get
{
return this.m_Type;
}
set
{
this.m_Type=value;
}
}
[XmlAttribute("deploy-model")]
public string DeployModel
{
get
{
return this.m_DeployModel;
}
set
{
this.m_DeployModel=value;
}
}
[XmlAttribute("pointcut-type")]
public string PointCutType
{
get
{
return this.m_PointCutType;
}
set
{
this.m_PointCutType=value;
}
}
[XmlAttribute("action-position")]
public string ActionPosition
{
get
{
return this.m_ActionPosition;
}
set
{
this.m_ActionPosition=value;
}
}
// [XmlAttribute("id")]
// public string ID
// {
// get
// {
// return this.m_ID;
// }
// set
// {
// this.m_ID = value;
// }
//
// }
[NonSerialized()]
public string ID;
[NonSerialized()]
public string AssemblyName;
[NonSerialized()]
public string ClassName;
[NonSerialized()]
public IAspect SingletonAspect;
public RuleCollection Rules
{
get
{
return this.m_RuleCollection;
}
set
border-right: #808080 1px solid;
发表评论
-
关于分层架构中的业务实体层的使用一直不太清楚,可否指点一下?
2007-03-23 09:10 674我知道业务逻辑层又可细分为三个层次,分别是业务外观层业务规则层 ... -
xml反串行化
2007-07-02 17:23 7341using System; 2using Syste ... -
WriteXmlSchema(xsdFileName)和GetXmlSchema()输出的内容的差异
2007-07-04 19:00 883利用DataSet.ReadXml载入一个xml文件,再使用G ... -
对websharp中aspect的改进(待续)
2007-11-17 14:27 696缘起 为了在我的《朗志轻量级项目管理解决方案》项目中应用 ... -
TreeView(树形控件)中常用到的属性和事件
2007-11-19 22:22 12971.TreeView(树形控件) ... -
有没有适合的的面向对象的查询语言(Object Query Language)
2007-11-28 10:15 762在我做《朗志轻量级项目管理解决方案》的过程中,我希望 ... -
问题解答集
2007-11-29 18:11 4421 如何在源代码的目录下添加一个测试文件 ... -
FckEditor自定义按钮
2007-11-29 18:35 832目录 FckEditor自定义按钮 1 目录 ... -
GhstDoc2.1.1使用手册
2007-11-29 18:39 726目录 GhstDoc2.1.1使用手册 1 ... -
Log4net使用说明
2007-11-29 18:44 786Log4net使用说明 1 修改历史纪录 ... -
MySQLHelper类使用说明
2007-11-29 18:46 1317目录 MySQLHelper类使用说明 1 目录 ... -
NDoc1.3.1使用手册
2007-11-29 18:47 770目录 NDoc1.3.1使用手册 1 目录 ... -
程序中操作Word
2007-11-29 18:52 729目录 程序中操作Word 1 目录 2 ... -
利用SMTP服务发送电子邮件
2007-11-29 18:58 1355目录 利用SMTP服务发送电子邮件 1 目录 ... -
程序中操作Excel
2007-11-29 18:59 639目录 程序中操作Excel 1 目录 ... -
访问被拒绝:“AjaxPro”的解决方案
2007-11-29 19:01 546目录 访问被拒绝:&qu ... -
sqlserver的版本号
2008-02-27 21:01 822当你安装了sqlserver 2005之后你就可以使用sqls ... -
在安装有VS2008beta2版本的机子上使用vs2005进行部署出现问题的解决方法
2008-02-27 21:13 680我知道,2008rtm发布已经很久了,不巧的是同学在我的机子上 ... -
忙话codesmith
2008-07-28 15:01 871为什么不是闲话,因为我很忙,项目中新问题是接连不断,上一篇讲到 ... -
Berkeley Db Associate关联数据函数的使用
2008-07-31 21:42 842Code<!--<br /><br ...
相关推荐
Websharp是众多Java Web开发技术中的一种,其核心是页面模板,它是一种通过模板引擎驱动模板来输出动态Web内容的技术。为什么要使用Websharp呢?因为它简单而高效。和Spring、Structs这些Java开发技术相比,Websharp...
2、 O/R 映射 3、 AOP 4、 分布式访问 WebSharp主要设计思路及涉及的技术: 在数据库访问部分,使用了ADO.Net和工厂模式;在ORM部分,使用了动态代码生成和即时编译,以及对DataSet进行了扩展;在AOP部分,使用了Proxy...
2. 基本概念:讲解路由、控制器、模型和视图等WebSharp核心概念。 3. 请求处理:阐述如何处理HTTP请求,包括GET、POST等操作。 4. 模板引擎:解释如何使用模板来动态生成HTML响应。 5. 数据绑定和验证:介绍数据模型...
WebSharp是一个开源框架,主要由孙亚民开发,它提供了诸如面向切面编程(AOP)等特性。本文将深入探讨WebSharp框架的核心概念、功能以及源代码学习的价值。 一、面向切面编程(AOP) 面向切面编程是软件开发中的一...
Websharp是一个专为构建Web应用程序而设计的框架,它结合了C#的强大功能与JavaScript的灵活性,使得开发者能够在服务器端和客户端使用同一门语言。这个"Websharp示例工程"很可能是为了展示如何利用Websharp进行开发...
"Websharp.Aspect"可能是指Websharp框架中的面向切面编程(AOP)支持。AOP允许开发者将关注点分离,如日志、事务管理等,从核心业务逻辑中解耦出来,从而提高代码的可读性和可维护性。通过使用切面,开发者可以更...
WebSharp是一个基于.NET框架的开源项目,主要用于构建高性能的Web应用程序。它主要设计用于嵌入式设备和系统,如工业自动化、物联网(IoT)设备、数字标牌等,但同样适用于桌面和服务器环境。本篇文章将深入探讨...
Websharp的目标,便是设计一个基于.Net的通用的应用软件系统的框架,以简化基于.Net平台的...目前,Websharp关注于企业应用软件的以下几个方面: 1、 数据库访问 2、 O/R 映射 3、 AOP 4、 分布式访问
WebSharp是一个开源项目,主要目的是将C#编程语言与JavaScript环境相结合,使开发者能够利用C#的强大功能在Web开发中创建高性能的前端和后端应用。这个源码库可能包含了WebSharper的核心库、编译器、运行时以及相关...
WebSharp2004是一个基于.NET Framework 1.1框架的开源项目,它展示了C#编程语言在构建Web应用程序方面的应用。这个项目可能是为了解决早期.NET开发中的特定挑战,或者是为了提供一个学习和理解Web应用程序开发基础的...
在数据库访问部分,使用了ADO.Net和工厂模式;在ORM部分,使用了动态...在Service Locator部分,使用的主要技术也是动态代码生成和即时编译. 注:Websharp是Open Source的,使用GNU LGPL许可证,版权属于原创者孙亚民
以Websharp Aspect框架为例,这是一个基于.NET平台的开源AOP框架。在业务逻辑中,我们可以将权限检查等横切关注点从核心代码中移除,通过AOP框架在运行时自动插入。例如,可以创建一个`Security`类来封装权限检查,...
Websharp 是 Microsoft dotNet 的轻量级应用程序框架。
在本案例中,`Websharp.Mshop.BLL`可能包含了业务逻辑层的代码,负责处理这些添加操作,而`Websharp.Mshop.DAL`可能是数据访问层,实现与数据库的交互。例如,一个`AddProduct`方法可能用于添加新产品到数据库,这个...
Websharp AOP是实现AOP的一种工具,通过切面(Aspect)来实现功能的插入和组合。 **7. 设计和实现** - **封装数据库访问层**:创建一个独立的库或服务来处理所有数据库操作,使业务逻辑层与数据层解耦。 - **设计...
Websharp 是一种可能的技术框架,它关注的点可能包括数据处理、用户界面交互和应用服务层的设计。在典型的三层应用系统中,分为数据库层、用户界面层和应用服务层。数据库层负责存储数据,用户界面层用于与用户交互...