Vb.net 如何组合三个几乎相同的函数?

Vb.net 如何组合三个几乎相同的函数?,vb.net,function,Vb.net,Function,我有3个不同的函数,除了一个部分(ENTERHEREin code)外,它们基本相同。LastWriteTime,lastAccessTime或CreationTime Public Sub DeleteByENTERHERE(delDirectory As String) Dim directory As New IO.DirectoryInfo(delDirectory) For Each dctFile As IO.FileInfo In directory.GetFil

我有3个不同的函数,除了一个部分(
ENTERHERE
in code)外,它们基本相同。
LastWriteTime
lastAccessTime
CreationTime

Public Sub DeleteByENTERHERE(delDirectory As String)

    Dim directory As New IO.DirectoryInfo(delDirectory)
    For Each dctFile As IO.FileInfo In directory.GetFiles()
        If dctFile.ENTERHERE.AddDays(Owner.PluginXML.DeleteDays) < Now Then 
            Try
               dctFile.Delete()
            Catch ex As Exception
            End Try
        End If
    Next

    If Owner.PluginXML.DeleteInSubfolders Then
        For Each folder As IO.DirectoryInfo In directory.GetDirectories()
            DeleteByENTERHERE(folder.FullName)
        Next
    End If
End Sub
如何将这三个功能合并为一个?我试过这样的方法,但感觉不是一个干净的解决方案

    If Owner.PluginXML.LastWriteTime Then
        If file.LastWriteTime.AddDays(Owner.PluginXML.DeleteDays) < Now Then
        End If
    End If

    If Owner.PluginXML.LastAccessTime Then
        If file.LastAccessTime.AddDays(Owner.PluginXML.DeleteDays) < Now Then
        End If
    End If

    If Owner.PluginXML.CreationTime Then
        If file.CreationTime.AddDays(Owner.PluginXML.DeleteDays) < Now Then
        End If
    End If
如果Owner.PluginXML.LastWriteTime那么
如果file.LastWriteTime.AddDays(Owner.PluginXML.DeleteDays)
我建议对接口使用三种不同的方法,但大部分实现都使用一种私有方法,例如

公共子DeleteByLastWriteTime(folderPath作为字符串)
DeleteByFileTime(folderPath,FileTimeType.LastWrite)
端接头
Public Sub-DeleteByStaccessTime(folderPath为字符串)
DeleteByFileTime(folderPath,FileTimeType.LastAccess)
端接头
公共子DeleteByCreationTime(folderPath为字符串)
DeleteByFileTime(folderPath,FileTimeType.Creation)
端接头
私有枚举FileTimeType
最后一笔
最后访问
创造
结束枚举
私有子DeleteByFileTime(folderPath作为字符串,fileTimeType作为fileTimeType)
将文件夹设置为新目录信息(folderPath)
对于文件夹.EnumerateFiles()中的每个文件
将文件时间设置为日期
选择案例文件时间类型
Case FileTimeType.LastWrite
fileTime=file.LastWriteTime
Case FileTimeType.LastAccess
fileTime=file.LastAccessTime
Case FileTimeType.Creation
fileTime=file.CreationTime
结束选择
如果fileTime.AddDays(Owner.PluginXML.DeleteDays)
您甚至可以将该私有方法重构为两个:

Private子DeleteByFileTime(folderPath作为字符串,fileTimeType作为fileTimeType)
将文件夹设置为新目录信息(folderPath)
对于文件夹.EnumerateFiles().Where(函数(fi)GetFileTime(fi,fileTimeType).AddDays(Owner.PluginXML.DeleteDays)
我建议对接口使用三种不同的方法,但大部分实现都使用一种私有方法,例如

公共子DeleteByLastWriteTime(folderPath作为字符串)
DeleteByFileTime(folderPath,FileTimeType.LastWrite)
端接头
Public Sub-DeleteByStaccessTime(folderPath为字符串)
DeleteByFileTime(folderPath,FileTimeType.LastAccess)
端接头
公共子DeleteByCreationTime(folderPath为字符串)
DeleteByFileTime(folderPath,FileTimeType.Creation)
端接头
私有枚举FileTimeType
最后一笔
最后访问
创造
结束枚举
私有子DeleteByFileTime(folderPath作为字符串,fileTimeType作为fileTimeType)
将文件夹设置为新目录信息(folderPath)
对于文件夹.EnumerateFiles()中的每个文件
将文件时间设置为日期
选择案例文件时间类型
Case FileTimeType.LastWrite
fileTime=file.LastWriteTime
Case FileTimeType.LastAccess
fileTime=file.LastAccessTime
Case FileTimeType.Creation
fileTime=file.CreationTime
结束选择
如果fileTime.AddDays(Owner.PluginXML.DeleteDays)
您甚至可以将该私有方法重构为两个:

Private子DeleteByFileTime(folderPath作为字符串,fileTimeType作为fileTimeType)
将文件夹设置为新目录信息(folderPath)
对于文件夹.EnumerateFiles().Where(函数(fi)GetFileTime(fi,fileTimeType).AddDays(Owner.PluginXML.DeleteDays)
    If Owner.PluginXML.LastWriteTime Then
        If file.LastWriteTime.AddDays(Owner.PluginXML.DeleteDays) < Now Then
        End If
    End If

    If Owner.PluginXML.LastAccessTime Then
        If file.LastAccessTime.AddDays(Owner.PluginXML.DeleteDays) < Now Then
        End If
    End If

    If Owner.PluginXML.CreationTime Then
        If file.CreationTime.AddDays(Owner.PluginXML.DeleteDays) < Now Then
        End If
    End If