• BlogEngine.netBusinessBase


    最近总想学点什么来提升自己,由此我开始学习BlogEngine,嘿嘿。

    http://www.cnblogs.com/Thriving-Country/archive/2008/11/04/1326334.html 这是一个大大写的相关文章,就是版本老了点,

    但是原理相通么,呵呵。我下了BlogEngine.net 2.5版本的。

    好了,开始旅程。

    打开工程,首先运行一遍,然后我就想从哪开始看,头大啊,好在有别人写的东西做参考,省了很多时间。

    在工程里有一个叫做BusinessBase的基类,其他所有的功能都是基于这个类进行展开的,不废话了,这些别人都已说过,我的重点是分析代码。

    BusinessBase
    1  public abstract class BusinessBase<T, TKey> : IDataErrorInfo, INotifyPropertyChanged, INotifyPropertyChanging, IChangeTracking, IDisposable
    2 where T : BusinessBase<T, TKey>, new()

    这是一个泛型类,实现了好多接口啊!IDataErrorInfo, INotifyPropertyChanged, INotifyPropertyChanging, IChangeTracking, IDisposable
    除了IDisposable,其他都是System.dll里的,看下这些接口都是些什么。

    IDataErrorInfo
     1 // Summary:
    2 // Provides the functionality to offer custom error information that a user
    3 // interface can bind to.
    4 public interface IDataErrorInfo
    5 {
    6 // Summary:
    7 // Gets an error message indicating what is wrong with this object.
    8 //
    9 // Returns:
    10 // An error message indicating what is wrong with this object. The default is
    11 // an empty string ("").
    12 string Error { get; }
    13
    14 // Summary:
    15 // Gets the error message for the property with the given name.
    16 //
    17 // Parameters:
    18 // columnName:
    19 // The name of the property whose error message to get.
    20 //
    21 // Returns:
    22 // The error message for the property. The default is an empty string ("").
    23 string this[string columnName] { get; }
    24 }
    INotifyPropertyChanged
    1 // Summary:
    2 // Notifies clients that a property value has changed.
    3 public interface INotifyPropertyChanged
    4 {
    5 // Summary:
    6 // Occurs when a property value changes.
    7 event PropertyChangedEventHandler PropertyChanged;
    8 }
    INotifyPropertyChanging
    1 // Summary:
    2 // Notifies clients that a property value is changing.
    3 public interface INotifyPropertyChanging
    4 {
    5 // Summary:
    6 // Occurs when a property value is changing.
    7 event PropertyChangingEventHandler PropertyChanging;
    8 }
    IChangeTracking
     1 // Summary:
    2 // Defines the mechanism for querying the object for changes and resetting of
    3 // the changed status.
    4 public interface IChangeTracking
    5 {
    6 // Summary:
    7 // Gets the object's changed status.
    8 //
    9 // Returns:
    10 // true if the object’s content has changed since the last call to System.ComponentModel.IChangeTracking.AcceptChanges();
    11 // otherwise, false.
    12 bool IsChanged { get; }
    13
    14 // Summary:
    15 // Resets the object’s state to unchanged by accepting the modifications.
    16 void AcceptChanges();
    17 }

    看了下,原来也没多少,什么错误消息,属性改变事件相关的东西。
    回到BusinessBase 这个类,才发现包含了大量的公共属性,方法,我是不是说了句废话.....

    看下面的类关系图


    好家伙,下面有7个儿子呢。看看这些儿子们是分别干什么的吧。
    AuthorProfile 用户注册信息
    Blog             代表一个博客实例
    BlogRollItem 博客友情链接
    Page            静态页面信息
    Referrer       反向链接信息
    Post            提交的一篇文章信息
    Category     文章种类

    至于细节方面实在太多,再说再说。

  • 相关阅读:
    CSharpGL(26)在opengl中实现控件布局/渲染文字
    CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子
    some OpenGL constants
    CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能
    CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator
    CSharpGL(22)实现顺序无关的半透明渲染(Order-Independent-Transparency)
    CSharpGL(21)用鼠标拾取、拖拽VBO图元内的点、线或本身
    批量重命名文件
    [译]基于GPU的体渲染高级技术之raycasting算法
    CSharpGL(20)用unProject和Project实现鼠标拖拽图元
  • 原文地址:https://www.cnblogs.com/whosedream/p/2251111.html
Copyright © 2020-2023  润新知