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

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

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

  • 相关阅读:
    [JNA系列]Java调用Delphi编写的Dll之Delphi与JAVA基本数据类型对比
    JSON和数据集互相转换单元
    Windows管理多个java版本--解决'has value '1.8',but'1.7' is required'的方法
    Spring+SpringMVC+MyBatis+Maven框架整合
    让你的程序通过XP防火墙
    内存共享【Delphi版】
    自学k8s-安装docker特定版本技巧
    自学k8s-k8s集群环境搭建
    自学k8s-安装过程为下载flannel.yml和镜像文件,而需要设置的代理
    Centos开放指定端口命令
  • 原文地址:https://www.cnblogs.com/virusswb/p/910960.html
Copyright © 2011-2022 走看看