星期二, 9月 16, 2008

Page.ResolveUrl在class的使用

今天寫程式寫到一半..遇到一個問題就是在class裡找不到Page.ResolveUrl()這個method..問了一下Cloudio大大..他說可以用繼承的方式來做..例如:

public class UrlPath : System.Web.UI.Page
{
public string GetRealPath(string path)
{
return Page.ResolveUrl(path);
}
}

可是想了一想..這方式真的有點鳥..Page跟我這class有啥鬼關係..用繼承多了很多不需要而且多餘的東西..想了一下..用委托的方式去丟進來解決這問題..會比繼承好很多..就像..

public class UrlPath
{
public string GetRealPath(Page page, string path)
{
return page.ResolveUrl(path);
}
}

這樣也比較符合物件導向的原則..fu好多了..在找了一下..發現..其實還有另一種方式來做..就像..

public class UrlPath
{
public string GetRealPath(string path)
{
return (HttpContext.Current.CurrentHandler as Page).ResolveUrl(path);
}
}

這樣可以把參數減少..感覺也不錯..所以..2跟3的方式都不錯..Big GrinBig GrinBig GrinBig GrinBig GrinBig GrinBig Grin..

ps:因為Cloudio大大是上班時被我亂了一下..所以沒有想太多就回我了..他事後也覺的繼承很鳥..^^||..

參考:

1 則留言:

小賤健 提到...

這招真的很讚,妙招,大家都要學起來哦。(偷偷筆記ing..):p