O código para obter a MasterPage de uma página é algo bastante simple, basta numa página que esteja a utilizar uma MasterPage fazer o seguinte:
SiteMaster thisMaster = this.Master as SiteMaster;
Contudo não me agrada o cast explícito que necessito fazer, pois a propriedade Master retorna um objecto do tipo System.Web.UI.MasterPage, porque será que esta propriedade por reflexividade não obtem o type da MasterPage e não retorna logo um objecto correctamente tipado? Seria muito mais útil e tornaria o código mais "limpo" e menos sujeito a erros.
Hey Tiago!
ResponderEliminarE porque não fazer:
MasterPage thisMaster = this.Master;
A menos que queiras utilizar propiedades específicas do teu tipo SiteMaster, é claro.
Se for esse o caso, como é a plataforma .NET iria advinhar que querias mesmo era trabalhar com o tipo SiteMaster e não com o tipo MasterPage?
Tens alguma sugestão do ponto de vista do compilador?
Acho que a plataforma .NET tornou o nosso trabalho tão produtivo que ficámos desleixados ao ponto de não querer fazer casts ;) (Remenber the c++ days)
Have fun!
Coelho
A ideia é mesmo usar propriedades que tenho na minha master page, por isso preciso do tipo exacto.
ResponderEliminarA plataforma não precisaria de adivinhar se eu queria trabalhar com o meu tipo ou com o tipo MasterPage, porque o meu tipo deriva de MasterPage, logo com o meu tipo eu tenho tudo.
A nível de compilador o que ele poderia fazer era por reflexão verificar o typeof da minha master page e fazer o cast implícito.
E sim a plataforma tornou o nosso trabalho mais produtivo, mas não considero que seja mais desleixado mas sim mais seguro, pois no C++ tinhamos de ter o controlo de muito mais coisas que agora a própria máquina virtual tem.