Po prvních dnech s novým Visual Studiem 2008 jsem narazil na menší
problém v kompilátoru C# 3.0. Když jsem si v práci otevřel náš Opus,
nešel zkompilovat, ačkoli v 2005 je vše ok. Problém byl v tom, že nový
kompilátor má problémy rozpoznat plné nesystémové namespacy a tak např.
zápis Atlas.Web... chápe jako
Atlas.Opus.Atlas.Web.... Takový namespace neexistuje a pak nejde
kód zkompilovat.
Ukázka zkráceného kódu, kde může nastat chyba:
namespace Atlas.Opus.Web {
public class SomeClass {
// nejaky kod tridy
var value = Atlas.Web.Utils.Config.GetInt32("key"); // tady
// dalsi kod tridy
}
}
Řešení se nabízejí přinejmenším dvě.
- Použít globální identifikátor např.
global::Atlas.Web..., čímž se problém vyřeší, ale zápis je ještě o kousek delší, než by musel být. - Tam, kde to jde, použít
usingnamespace. - Tam, kde hrozí kolize názvů tříd, použít aliasy pomocí klíčového
slova
usingnapř.using utils = Atlas.Web.Utils;a v kódu pak upravit volání nautils::Config....
Je to docela zajímavá vlastnost, že nová verze kompilátoru interpretuje namespacy jinak než předchozí verze. Naneštěstí je to vlastnost nepěkná a přináší v některých případech práci navíc.










