No, mozna tady zaznelo, ze jde o preferenci stylu, ale podle me to vubec neni pravda.
To, zda kod zapisu "if (type.Name == "neco")" nebo "if (type.IsInstanceOf(typeof(IPlugBase))", NENI o tom, jakou si zvolim preferenci. To NEJSOU dva ekvivalentni zapisy. Tyto dve varianty maji rozdilna chovani a rozdilne vyhody a nevyhody a dobry programator by se mel rozhodovat podle nich a ne podle toho, "co je mu milejsi".
Vyhody druheho zapisu jsou vice nez jasne, predevsim jde o to, ze to, podle ceho se poznava, ze nejaka trida implementuje IPlugBase, je opravdu to, ze ho implementuje. A ne to, ze se nejak jmenuje. Kdyz si udelam dllku, kde si udelam tridu Plugin, ktera IPlugBase implementovat nebude, a strcim ji do Plugins adresare, tak kod v clanku se s vyjimkou zhrouti na radku "b = (Core.IPlugBase)ass.CreateInstance(t.FullName);". A navic ta prvni varianta vubec nuti pisatele pluginu vedet, ze se ta trida musi jmenovat Plugin - proc ?
V kodu jsou jeste dalsi naprosto skolacke chyby. Volne stojici literaly v kodu, pojmenovavani promennych naprosto nicnerikajicimi nazvy (napr. b). I sam typ IPlugBase ma naprosto nevhodny nazev. Nazev typu konciciho na Base se dava vyhradne bazove tride, a jen pokud je i tato trida schovana za ifacem z duvodu napr. unit testu, pak ma smysl jeste INecoBase. Samotny interface ma zacinat pouze na I, v tomto pripade IPlugin, jinak tim autor mate programatory, kteri na tom projektu maji dal pracovat, vcetne tech, co budou psat samotne pluginy.
Zkratka a dobre, ty mozna jo, ale takove programatorske ucho, co tohle vymodlilo, bych ve sve firme nezamestnal, ani kdyby mi platil !