zoukankan      html  css  js  c++  java
  • wojilu评论功能代码分析简记

    最近,简单看了一下wojilu评论功能的实现,作者介绍文章(http://www.wojilu.com/Common/Page/52)

    FileComment : ObjectBase<FileComment>, IComment

      FileComment实现 IComment接口, IComment 接口定义了一个评论对象应该表现的行为。

    另外,FileCommentController : CommentController<FileComment>。

    public class CommentController<T> : ControllerBase where T : ObjectBase<T>, IComment

    {
    public ICommentService<T> commentService { get; set; }

     CommentController 组合使用 CommentService<T>对象,管理评论。

     看一个 CommentController中 的方法Create,创建评论

    [HttpPost, DbTransaction]
     public virtual void Create( int postId ) {
     ......
     IComment comment = Validate( postId );//验证并获取一个评论对象
    ......
     Result result = commentService.Insert( comment, lnkTarget );//保存评论对象到数据库。
    ......

    public IComment Validate( int postId ) {

     IComment comment = Entity.New( typeof( T ).FullName ) as IComment;//生成一个评论对象
     ......
    comment.RootId = postId;
    comment.ParentId = ctx.PostInt( "ParentId" );
    comment.AppId = ctx.app.Id;
    comment.Author = userName;
    comment.Content = content;
    comment.Ip = ctx.Ip;
    comment.Created = DateTime.Now;

    if (ctx.viewer.IsLogin) {
    comment.Member = (User)ctx.viewer.obj;
    }
    return comment;

     学习这段代码收获很多,加深了对接口用法的理解,了解了泛型约束的概念。

     IComment comment = Entity.New( typeof( T ).FullName ) as IComment;//生成一个评论对象

    以上,有时间在学习体会一下。 

  • 相关阅读:
    负载(Load)分析及问题排查
    MySQL 数据库规范--调优篇(终结篇)
    AbstractQueuedSynchronizer
    为什么String被设计为不可变?是否真的不可变?
    数据库 分库 分表 分区
    Oracle 数据库知识汇总篇
    小知识:如何判断数据文件的高水位线
    RHEL7安装11204 RAC的注意事项
    案例:DG主库未设置force logging导致备库坏块
    Oracle 11g RAC之HAIP相关问题总结
  • 原文地址:https://www.cnblogs.com/xchsp/p/2289848.html
Copyright © 2011-2022 走看看