zoukankan      html  css  js  c++  java
  • 封装原来的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

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

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

  • 相关阅读:
    ES6 快速入门
    export,import ,export default区别
    React 生命周期
    Nodejs npm常用命令
    JavaScript:改变 HTML 图像
    WebStorm安装、配置node.js(Windows)
    Flex 布局
    块级元素与行内元素区别
    自动化测试弹框处理
    python远程操作服务器
  • 原文地址:https://www.cnblogs.com/virusswb/p/910960.html
Copyright © 2011-2022 走看看