segunda-feira, maio 12, 2008

Get MasterPage

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.

2 comentários:

BCoelho2000 disse...

Hey Tiago!

E 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

Tiago Sousa disse...

A ideia é mesmo usar propriedades que tenho na minha master page, por isso preciso do tipo exacto.

A 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.