我寫了一個shell擴展,它對文件夾中的文件進行排序。我有的結構是,對於所有類型的文件都有自己的類,我有自定義的內部方法進行排序。在進一步使用它們之前確定類的能力
在所有類中都是帶有字符串類型擴展名的列表。問題是我不知道如何定義第一步的類型文件來創建適當的對象並繼續排序。 (編輯:即哪個類應該排序哪種文件類型)
首先這是主排序,我們獲取目錄中的所有文件,然後我們取一個文件並檢查它,如果它屬於一個現有的文件類型,那麼我們應該使用屬於適當類的排序方法。 我不能修復的時刻是「檢查它,如果它屬於現有的文件類型之一」。
文件類型是作爲一個單獨的類呈現的。所以,對於JPEG或PNG,我有類圖形,這個類包含二次排序,但首先我們需要知道該文件屬於圖形。
現在,我做了這樣的排序是這樣的,只是在創建對象開始,然後檢查
public void PrimarySorting(string folderPath)
{
var allFiles = Directory.GetFiles(folderPath, "*.*", SearchOption.TopDirectoryOnly).ToList();
while (allFiles.Count != 0)
{
allFiles = Directory.GetFiles(folderPath, "*.*", SearchOption.TopDirectoryOnly).ToList();
foreach (var file in allFiles)
{
var directoryName = new DirectoryInfo(folderPath).Name;
var fileType = Path.GetExtension(file);
var sourcePath = file;
//var destinationPath = folderPath + "/" + area + directoryName + "/" + fileName;
char[] toRemoveFromExtensionString = {'.', '"'};
if (fileType != null)
{
var extensionLikeSymbols = fileType.Trim(toRemoveFromExtensionString).ToLower();
var gr = new Graphics();
var arc = new Archive();
if (
gr.ColorManagement.Union(gr.ColorPalettes)
.Union(gr.RasterGraphics)
.Union(gr.VectorGraphics)
.Union(gr.ThreeDimensionalGraphics)
.Contains(extensionLikeSymbols))
{
var objectToCallMethod = new Graphics();
objectToCallMethod.CustomSortForParticularArea(extensionLikeSymbols, file,
folderPath, objectToCallMethod, sourcePath, directoryName);
}
else if (
arc.Compressed.Union(arc.PhysicalRecordableMediaArchives)
.Contains(extensionLikeSymbols))
{
var objectToCallMethod = new Archive();
;
objectToCallMethod.CustomSortForParticularArea(extensionLikeSymbols, file,
folderPath, objectToCallMethod, sourcePath, directoryName);
}
}
}
}
}
請用文字替換代碼圖片。 – adv12
在.NET代碼中的實際ShellExtension不明智:[實現進程內擴展的指導](https://msdn.microsoft.com/en-us/library/windows/desktop/dd758089(v = vs.85) .aspx)即:** Microsoft建議不要將託管的進程內擴展編寫到Windows資源管理器或Windows Internet Explorer,並且不會將其視爲受支持的方案。** – Plutonix
@Plutonix我寫如果只是爲了讓自己更深入地學習代碼,那麼這對我來說就是我,而不是生意上的事。 – whoiskatrin