• 封装原来的DirectoryInfo类,添加事件,可以代替FileSystemWatcher 类 Virus


    using System;
    using System.IO;

    //封装原来的DirectoryInfo类,添加事件,可以代替FileSystemWatcher 类
    public class DirectoryInfoNotify
    {
        public DirectoryInfoNotify(string path)
        {
            internalDirInfo = new DirectoryInfo(path);
        }
        
        private DirectoryInfo internalDirInfo = null;
        public event EventHandler AfterCreate;
        public event EventHandler AfterCreateSubDir;
        public event EventHandler AfterDelete;
        public event EventHandler AfterMoveTo;
        protected virtual void OnAfterCreate()
        {
            EventHandler afterCreate = AfterCreate;
            if (afterCreate != null)
            {
                
                afterCreate(this, new EventArgs());
            }
        }

        protected virtual void OnAfterCreateSubDir()
        {
            EventHandler afterCreateSubDir = AfterCreateSubDir;
            if (afterCreateSubDir != null)
            {
                afterCreateSubDir(this, new EventArgs());
            }
        }

        protected virtual void OnAfterDelete()
        {
            EventHandler afterDelete = AfterDelete;
            if (afterDelete != null)
            {
                afterDelete(this, new EventArgs());
            }
        }

        protected virtual void OnAfterMoveTo()
        {
            EventHandler afterMoveTo = AfterMoveTo;
            if (afterMoveTo != null)
            {
                afterMoveTo(this, new EventArgs());
            }
        }

        // Event firing members
        //激活事件的方法
        public void Create()
        {
            
            internalDirInfo.Create();
            OnAfterCreate();
        }

        public DirectoryInfoNotify CreateSubdirectory(string path)
        {
            DirectoryInfo subDirInfo = internalDirInfo.CreateSubdirectory(path);
            OnAfterCreateSubDir();

            return (new DirectoryInfoNotify(subDirInfo.FullName));
        }

        public void Delete(bool recursive)
        {
            internalDirInfo.Delete(recursive);
            OnAfterDelete();
        }

        public void Delete()
        {
            internalDirInfo.Delete();
            OnAfterDelete();
        }

        public void MoveTo(string destDirName)
        {
            internalDirInfo.MoveTo(destDirName);
            OnAfterMoveTo();
        }

        // Nonevent firing members
        public string FullName
        {
            get { return (internalDirInfo.FullName); }
        }
        public string Name
        {
            get { return (internalDirInfo.Name); }
        }
        public DirectoryInfoNotify Parent
        {
            get { return (new DirectoryInfoNotify(internalDirInfo.Parent.FullName)); }
        }
        public DirectoryInfoNotify Root
        {
            get { return (new DirectoryInfoNotify(internalDirInfo.Root.FullName)); }
        }

        public override string ToString()
        {
            return (internalDirInfo.ToString());
        }
    }

    【Blog】http://virusswb.cnblogs.com/

    【MSN】jorden008@hotmail.com

    【说明】转载请标明出处,谢谢

    反馈文章质量,你可以通过快速通道评论:

  • 相关阅读:
    HDU4474 Yet Another Multiple Problem BFS搜索
    HDU4473 Exam 数学分析
    2013ACM多校联合(4)
    POJ1273 网络流...
    HDU4472 Count 递推
    POJ1149 PIGS 网络流
    UVA10881 Piotr's Ants 想法题
    javascript js string.Format()收集
    修改 设置 vs.net 网站 调试 设为 起始页
    【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  • 原文地址:https://www.cnblogs.com/virusswb/p/910960.html
Copyright © 2020-2023  润新知