private void SetSubCategoryChain()
        {
            switch (_extension)
            {
            case ".exe":
            case ".txt":
                _subCategories = new ExeSubCategorizeContainsC();
                _subCategoryLinks.Add(new ExeSubCategorizeAFollowedByB());
                _subCategoryLinks.Add(new ExeSubCategorizeContainsZ());
                break;

            case ".pdf":
            case ".bmp":
                _subCategories = new PdfSubCategorizeAFollowedByB();
                _subCategoryLinks.Add(new PdfSubCategorizeContainsZ());
                break;

            case ".docx":
                _subCategories = new DocSubCategorizeContainsG();
                _subCategoryLinks.Add(new DocSubCategorizeGFollowedByB());
                _subCategoryLinks.Add(new DocSubCategorizeContainsZ());
                break;

            default:
                break;
            }
            if (_subCategoryLinks.Count != 0)
            {
                for (int i = 0; i < _subCategoryLinks.Count() - 1; i++)
                {
                    _subCategoryLinks[i].SetNextChain(_subCategoryLinks[i + 1]);
                }
                _subCategories.SetNextChain(_subCategoryLinks[0]);
            }
        }
 public void SetNextChain(IChainCategorization chain)
 {
     NextChain = chain;
 }