<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.paulomorgado.net/~d/styles/rss2portuguesefull.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.paulomorgado.net/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:pheedo="http://www.pheedo.com/namespace/pheedo" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Paulo Morgado</title><link>http://www.arquitecturadesoftware.org/blogs/paulomorgado/default.aspx</link><description>Tudo sobre Arquitectura de Software</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><creativeCommons:license>http://creativecommons.org/licenses/by/2.5/</creativeCommons:license><image><link>http://www.arquitecturadesoftware.org/blogs/paulomorgado/</link><url>http://www.arquitecturadesoftware.org/users/avatar.aspx?userid=2125</url><title>Paulo Morgado</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="rua chanceler-mor, cacém, portugal" type="application/rss+xml" /><feedburner:emailServiceId>803889</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.rojo.com/add-subscription?resource=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://blog.rojo.com/RojoWideRed.gif">Subscribe with Rojo</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/rua chanceler-mor, cacém, portugal" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=rua%20chanceler-mor%2C%20cac%C3%A9m%2C%20portugal" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><item><title>Outras Formas De Fazer Com Que PathInfo E ASP.NET Themes Coexistam</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/345151129/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx</pheedo:origLink><pubDate>Fri, 25 Jul 2008 00:24:33 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14848</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14848.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14848</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14848</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Na minha última &lt;a title="Fazendo Com Que PathInfo E ASP.NET Themes Coexistam" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx" target="_blank"&gt;entrada&lt;/a&gt; apresentei uma solução para &lt;a title="PathInfo E Temas ASP.NET: Porque Não Conseguem Coexistir?" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx" target="_blank"&gt;os problemas que ocorrem quando tentamos usar path infos em conjunto com ASP.NET Themes and Skins&lt;/a&gt;.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;O &lt;a title="Raj Kaimal" href="http://weblogs.asp.net/rajbk/" target="_blank"&gt;Raj Kaimal&lt;/a&gt;&amp;#160;&lt;a title="Making PathInfo And ASP.NET Themes Work Together" href="http://weblogs.asp.net/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx#comments" target="_blank"&gt;sugeriu&lt;/a&gt; reescrever os URLs de todos os elementos HTML &lt;a title="LINK Element | link Object" href="http://msdn.microsoft.com/library/ms535848.aspx" target="_blank"&gt;LINK&lt;/a&gt; de forma a que fossem correctamente vistos pelo cliente. Algo como isto:&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;void &lt;/span&gt;HttpApplicationPreRequestHandlerExecute(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
{
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpApplication = sender &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpContext = httpApplication.Context;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;page = httpContext.CurrentHandler &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;((page != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; !&lt;span style="color:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(httpContext.Request.PathInfo))
    {
        page.PreRenderComplete += &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;object &lt;/span&gt;source, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;args)
        {
            &lt;span style="color:blue;"&gt;var &lt;/span&gt;p = source &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

            &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(System.Web.UI.&lt;span style="color:#2b91af;"&gt;Control &lt;/span&gt;headerControl &lt;span style="color:blue;"&gt;in &lt;/span&gt;p.Header.Controls)
            {
                &lt;span style="color:blue;"&gt;var &lt;/span&gt;link = headerControl &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.HtmlControls.&lt;span style="color:#2b91af;"&gt;HtmlLink&lt;/span&gt;;
                &lt;span style="color:blue;"&gt;if &lt;/span&gt;(link != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
                {
                    link.Href = p.ResolveUrl(link.Href);
                }
            }
        };
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Com esta aproximação persiste ainda o problema (que a minha aproximação não resolvia) com &lt;em&gt;post backs&lt;/em&gt; porque o URL contido no atributo &lt;a title="ACTION Attribute | action Property" href="http://msdn.microsoft.com/library/ms533063.aspx" target="_blank"&gt;ACTION&lt;/a&gt; &lt;a title="FORM Element | form Object" href="http://msdn.microsoft.com/library/ms535249.aspx" target="_blank"&gt;FORM&lt;/a&gt; HTML também tem os seus &lt;a title="FORM ACTION not rendered correctly when the reques has a PathInfo" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=357669" target="_blank"&gt;probelmas&lt;/a&gt;.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;O &lt;a href="http://weblogs.pontonetpt.com/israelaece/"&gt;Israel Aéce&lt;/a&gt;&amp;#160;&lt;a title="Fazendo Com Que PathInfo E ASP.NET Themes Coexistam" href="http://weblogs.pontonetpt.com/pjmorgado/posts/27968.aspx#27970" target="_blank"&gt;sugeriu&lt;/a&gt; a utilização do elemento HTML &lt;a title="BASE Element | base Object" href="http://msdn.microsoft.com/library/ms535191.aspx" target="_blank"&gt;BASE&lt;/a&gt; para redefinir a base dos URLs relativos. Algo como isto:&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;void &lt;/span&gt;HttpApplicationPreRequestHandlerExecute(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
{
    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpApplication = sender &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;httpContext = httpApplication.Context;

    &lt;span style="color:blue;"&gt;var &lt;/span&gt;page = httpContext.CurrentHandler &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;((page != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; !&lt;span style="color:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(httpContext.Request.PathInfo))
    {
        page.PreRenderComplete += &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;object &lt;/span&gt;source, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;args)
        {
            page.Init += &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;object &lt;/span&gt;source, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;args)
            {
                &lt;span style="color:blue;"&gt;var &lt;/span&gt;p = source &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.UI.&lt;span style="color:#2b91af;"&gt;Page&lt;/span&gt;;

                &lt;span style="color:blue;"&gt;var &lt;/span&gt;htmlBase = &lt;span style="color:blue;"&gt;new &lt;/span&gt;System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;WebControl&lt;/span&gt;(System.Web.UI.&lt;span style="color:#2b91af;"&gt;HtmlTextWriterTag&lt;/span&gt;.Base);
                htmlBase.Attributes.Add(&lt;span style="color:#a31515;"&gt;&amp;quot;href&amp;quot;&lt;/span&gt;, p.Request.Url.GetLeftPart(System.&lt;span style="color:#2b91af;"&gt;UriPartial&lt;/span&gt;.Authority) + p.Request.CurrentExecutionFilePath);
                p.Header.Controls.Add(htmlBase);
            };
        };
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Esta parece ser a melhor solução excepto se o vosso &lt;em&gt;site&lt;/em&gt; estiver por detrás de vários perímetros e de segurança e não for possível determinar com certeza qual o domínio tal como é visto do lado do cliente, que era o meu problema.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Mas se estão a pensar chamar &lt;a title="HttpServerUtility.Executet Method" href="http://msdn.microsoft.com/library/System.Web.HttpServerUtility.Execute.aspx" target="_blank"&gt;Server.Execute&lt;/a&gt;, &lt;a title="HttpServerUtility.TransferRequest Method" href="http://msdn.microsoft.com/library/System.Web.HttpServerUtility.TransferRequest.aspx" target="_blank"&gt;Server.TransferRequest&lt;/a&gt; ou &lt;a title="HttpServerUtility.TransferRequest Method" href="http://msdn.microsoft.com/library/System.Web.HttpServerUtility.TransferRequest.aspx" target="_blank"&gt;Server.TransferRequest&lt;/a&gt;, nenhuma destas soluções funcionará.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx&amp;amp;;subject=Outras+Formas+De+Fazer+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx&amp;amp;;title=Outras+Formas+De+Fazer+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx&amp;amp;title=Outras+Formas+De+Fazer+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx&amp;amp;;title=Outras+Formas+De+Fazer+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx&amp;amp;;title=Outras+Formas+De+Fazer+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/25/outras-formas-de-fazer-com-que-pathinfo-e-asp-net-themes-coexistam.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14848" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=4666ef3b53298567cb6e1d210dfbe17c"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=4666ef3b53298567cb6e1d210dfbe17c"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=4666ef3b53298567cb6e1d210dfbe17c" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=PtyUd2"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=PtyUd2" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=uVtm3J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=uVtm3J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=EHiiXJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=EHiiXJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=xWxvjj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=xWxvjj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=3lYPQJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=3lYPQJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Of48Rj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Of48Rj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=S74aej"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=S74aej" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=pExXwJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=pExXwJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=H23acj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=H23acj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=ZlqlOJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=ZlqlOJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=UOkWHj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=UOkWHj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=2rNTtJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=2rNTtJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Q4HHOj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Q4HHOj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=GjXc2J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=GjXc2J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=1MWJvj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=1MWJvj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/345151129" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=4666ef3b53298567cb6e1d210dfbe17c</feedburner:origLink></item><item><title>Fazendo Com Que PathInfo E ASP.NET Themes Coexistam</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/344072766/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx</pheedo:origLink><pubDate>Thu, 24 Jul 2008 00:23:24 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14838</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14838.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14838</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14838</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Na minha última &lt;a title="PathInfo E Temas ASP.NET: Porque Não Conseguem Coexistir?" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx" target="_blank"&gt;entrada&lt;/a&gt; escrevi acerca dos problemas que ocorrem quando tentamos usar &lt;a title="HttpRequest.PathInfo Property" href="http://msdn.microsoft.com/library/System.Web.HttpRequest.PathInfo.aspx" target="_blank"&gt;path infos&lt;/a&gt; em conjunto com &lt;a title="ASP.NET Themes and Skins" href="http://msdn.microsoft.com/library/ea1d8583-c05c-4e97-a851-0ceefea328f7.aspx" target="_blank"&gt;ASP.NET Themes and Skins&lt;/a&gt;.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Mas, tal como na maioria das vezes, não estamos interessados no &lt;strong&gt;porque não podemos&lt;/strong&gt;. Apenas queremos saber &lt;strong&gt;como podemos&lt;/strong&gt;.&lt;/a&gt;&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Na minha opinião, a forma correcta de o fazer seria usar URLs referenciados a partir da raíz.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Mas como não o podemos fazer, a segunda melhor hipótese será servir correctamente os pedidos erradamente endereçados.&lt;/a&gt;&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Mas, como o poderemos fazer?&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;A única solução que arranjei foi um &lt;a title="IHttpModule Interface" href="http://msdn.microsoft.com/library/System.Web.IHttpModule.aspx" target="_blank"&gt;Módulo HTTP&lt;/a&gt;:&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AppThemesModule &lt;/span&gt;: &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.&lt;span style="color:#2b91af;"&gt;IHttpModule
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private static int &lt;/span&gt;searchStartIndex = System.Web.&lt;span style="color:#2b91af;"&gt;HttpRuntime&lt;/span&gt;.AppDomainAppVirtualPath.Length;

    &lt;span style="color:blue;"&gt;#region &lt;/span&gt;IHttpModule Members

    &lt;span style="color:blue;"&gt;public void &lt;/span&gt;Dispose()
    {
    }

    &lt;span style="color:blue;"&gt;public void &lt;/span&gt;Init(System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication &lt;/span&gt;context)
    {
        context.BeginRequest += HttpApplicationBeginRequest;
    }

    &lt;span style="color:blue;"&gt;#endregion

    void &lt;/span&gt;HttpApplicationBeginRequest(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, System.&lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
    {
        System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication &lt;/span&gt;httpApplication = sender &lt;span style="color:blue;"&gt;as &lt;/span&gt;System.Web.&lt;span style="color:#2b91af;"&gt;HttpApplication&lt;/span&gt;;

        &lt;span style="color:blue;"&gt;string &lt;/span&gt;path = httpApplication.Request.Path;
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(path.Length &amp;gt; searchStartIndex)
        {
            &lt;span style="color:blue;"&gt;int &lt;/span&gt;appThemesStartIndex = path.IndexOf(&lt;span style="color:#a31515;"&gt;&amp;quot;/App_Themes/&amp;quot;&lt;/span&gt;, searchStartIndex);
            &lt;span style="color:blue;"&gt;if &lt;/span&gt;(appThemesStartIndex &amp;gt; 0)
            {
                httpApplication.Context.RewritePath(&lt;span style="color:#a31515;"&gt;&amp;quot;~&amp;quot; &lt;/span&gt;+ path.Substring(appThemesStartIndex));
            }
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Além de registar o móduilo será necessário configurar o directório virtual para que os pedidos para conteúdos a serem servidos dos temas sejam tratados por um &lt;a title="StaticFileHandler Class" href="http://msdn.microsoft.com/library/ms404287.aspx" target="_blank"&gt;StaticFileHandler&lt;/a&gt;.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx&amp;amp;;subject=Fazendo+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx&amp;amp;;title=Fazendo+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx&amp;amp;title=Fazendo+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx&amp;amp;;title=Fazendo+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx&amp;amp;;title=Fazendo+Com+Que+PathInfo+E+ASP.NET+Themes+Coexistam&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/24/making-pathinfo-and-asp-net-themes-work-together.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14838" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=dc5bd83b470700161f1bce6a6514d011"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=dc5bd83b470700161f1bce6a6514d011"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=dc5bd83b470700161f1bce6a6514d011" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=3khzSd"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=3khzSd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=QqFYnJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=QqFYnJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=BEVV0J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=BEVV0J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=DCySBj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=DCySBj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=GiyEnJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=GiyEnJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=o9BUZj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=o9BUZj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=eL7Khj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=eL7Khj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Ed8x9J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Ed8x9J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Fkf7Kj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Fkf7Kj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=WUO4hJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=WUO4hJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=zSlKVj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=zSlKVj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=uEa6gJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=uEa6gJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=w9D3Ej"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=w9D3Ej" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=d6r6sJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=d6r6sJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=pvjHsj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=pvjHsj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/344072766" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=dc5bd83b470700161f1bce6a6514d011</feedburner:origLink></item><item><title>PathInfo E Temas ASP.NET: Porque Não Conseguem Coexistir?</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/344018489/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx</pheedo:origLink><pubDate>Wed, 23 Jul 2008 22:54:34 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14827</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>2</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14827.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14827</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14827</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Se já trabalharam com &lt;a title="ASP.NET Themes and Skins" href="http://msdn.microsoft.com/library/ea1d8583-c05c-4e97-a851-0ceefea328f7.aspx" target="_blank"&gt;ASP.NET Themes and Skins&lt;/a&gt;, sabem que são adicionadas referências para &lt;em&gt;stylesheets&lt;/em&gt; na secção &lt;strong&gt;head&lt;/strong&gt; do documento HTML.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;O URL gerado para estas &lt;em&gt;stylesheets&lt;/em&gt; é sempre relativo.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Ou seja, para um pedido para:&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p style="margin-left:10px;font-family:consolas,courier new;"&gt;http://MySite/Section/Default.aspx&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;obtemos:&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p style="margin-left:10px;font-family:consolas,courier new;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;link &lt;/span&gt;&lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;../App_Themes/Default/Styles.css&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;text/css&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;rel&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;stylesheet&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;que faz com que o &lt;em&gt;web browser&lt;/em&gt; faça um pedido para:&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p style="margin-left:10px;font-family:consolas,courier new;"&gt;http://MySite/App_Themes/Default/Styles.css&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;e tudo funciona às mil maravilhas.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Bem, tudo funciona às mil maravilhas até que se faça um pedido para:&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p style="margin-left:10px;font-family:consolas,courier new;"&gt;http://MySite/Section/Default.aspx/PathInfo&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Obtemos as mesmas referências para &lt;em&gt;stylesheets&lt;/em&gt; e o &lt;em&gt;web browser&lt;/em&gt; fará um pedido para:&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p style="margin-left:10px;font-family:consolas,courier new;"&gt;http://MySite/Section/Default.aspx/App_Themes/Default/Styles.css&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Isto acontece porque o &lt;em&gt;web browser&lt;/em&gt; não tem qualquer conhecimento do que são &lt;a title="HttpRequest.PathInfo Property" href="http://msdn.microsoft.com/library/System.Web.HttpRequest.PathInfo.aspx" target="_blank"&gt;PathInfo&lt;/a&gt;s. Apenas sabe quantos separadores (/) existem.&lt;/p&gt;  &lt;p align="justify"&gt;Introduzi um &lt;a title="Themes don&amp;#39;t work when the request has a PathInfo" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=357532" target="_blank"&gt;bug&lt;/a&gt; no &lt;a title="Microsoft Connect" href="http://connect.microsoft.com/" target="_blank"&gt;Microsoft Connect&lt;/a&gt; acerca disto.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx&amp;amp;;subject=PathInfo+E+Temas+ASP.NET%3a+Porque+N%26%23227%3bo+Conseguem+Coexistir%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx&amp;amp;;title=PathInfo+E+Temas+ASP.NET%3a+Porque+N%26%23227%3bo+Conseguem+Coexistir%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx&amp;amp;title=PathInfo+E+Temas+ASP.NET%3a+Porque+N%26%23227%3bo+Conseguem+Coexistir%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx&amp;amp;;title=PathInfo+E+Temas+ASP.NET%3a+Porque+N%26%23227%3bo+Conseguem+Coexistir%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx&amp;amp;;title=PathInfo+E+Temas+ASP.NET%3a+Porque+N%26%23227%3bo+Conseguem+Coexistir%3f&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/23/pathinfo-e-temas-asp-net-porque-n-o-conseguem-coexistir.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14827" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/feeds/ht.php?t=c&amp;amp;i=1c1418bf354980450fc9185fd3ccebd9"&gt;&lt;img src="http://www.pheedo.com/feeds/ht.php?t=v&amp;amp;i=1c1418bf354980450fc9185fd3ccebd9" border="0" /&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=1c1418bf354980450fc9185fd3ccebd9" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=kw9qwG"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=kw9qwG" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Gre2rJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Gre2rJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=NgRGlJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=NgRGlJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Lb6P2j"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Lb6P2j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=kcpqCJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=kcpqCJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Xv4S6j"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Xv4S6j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=GrkODj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=GrkODj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=cWxS8J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=cWxS8J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=bhQAFj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=bhQAFj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Vq0iHJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Vq0iHJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Kd3qCj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Kd3qCj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=TVnipJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=TVnipJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=PtWOOj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=PtWOOj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=aYA4HJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=aYA4HJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=9rBgkj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=9rBgkj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/344018489" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=1c1418bf354980450fc9185fd3ccebd9</feedburner:origLink></item><item><title>Tornem A Classe HttpValueCollection Pública E Movam-na Para System.DLL</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/335593123/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx</pheedo:origLink><pubDate>Tue, 15 Jul 2008 00:33:57 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14597</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14597.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14597</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14597</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Eu acho a classe &lt;strong&gt;System.Web.HttpValueCollection&lt;/strong&gt; muito útil num vasto número de situações que envolvem a composição de pedidos HTTP ou qualquer outra necessidade e representar uma colecção de pares nome/valor como uma cadeia de caracteres (num atributo XML, por exemplo).&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Actualmente (&lt;a title="Microsoft .NET" href="http://www.microsoft.com/net/" target="_blank"&gt;.NET Framework&lt;/a&gt; 3.5 SP1 Beta), a única forma de criar uma instância da classe &lt;strong&gt;System.Web.HttpValueCollection&lt;/strong&gt; é usando o &lt;a title="Método System.Web.HttpUtility.ParseQueryString" href="http://msdn.microsoft.com/library/System.Web.HttpUtility.ParseQueryString.aspx" target="_blank"&gt;método System.Web.HttpUtility.ParseQueryString&lt;/a&gt;.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Eu gostaria que esta classe fosse pública e estivesse numa &lt;em&gt;assembly&lt;/em&gt; mais genérica como a &lt;strong&gt;System.DLL&lt;/strong&gt; para estar disponível para qualquer tipo de aplicação &lt;a title=".NET Framework Developer Center" href="http://msdn.microsoft.com/netframework/" target="_blank"&gt;.NET&lt;/a&gt; (aplicações Windows Client, aplicações Windows Service, aplicações Silverlight, aplicações Windows Mobile, etc.).&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Se concordam comigo, &lt;a title="Make the HttpValueCollection class public and move it to System.dll" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=356144" target="_blank"&gt;votem na minha sugestão&lt;/a&gt; no &lt;a title="Microsoft Connect" href="http://connect.microsoft.com/" target="_blank"&gt;Microsoft Connect&lt;/a&gt;.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx&amp;amp;;subject=Tornem+A+Classe+HttpValueCollection+P%26%23250%3bblica+E+Movam-na+Para+System.DLL" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx&amp;amp;;title=Tornem+A+Classe+HttpValueCollection+P%26%23250%3bblica+E+Movam-na+Para+System.DLL" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx&amp;amp;title=Tornem+A+Classe+HttpValueCollection+P%26%23250%3bblica+E+Movam-na+Para+System.DLL" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx&amp;amp;;title=Tornem+A+Classe+HttpValueCollection+P%26%23250%3bblica+E+Movam-na+Para+System.DLL" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx&amp;amp;;title=Tornem+A+Classe+HttpValueCollection+P%26%23250%3bblica+E+Movam-na+Para+System.DLL&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/15/tornem-a-classe-httpvaluecollection-p-blica-e-movam-na-para-system-dll.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14597" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/feeds/ht.php?t=c&amp;amp;i=02e90ad756baa37f9753cce83c862eb0"&gt;&lt;img src="http://www.pheedo.com/feeds/ht.php?t=v&amp;amp;i=02e90ad756baa37f9753cce83c862eb0" border="0" /&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=02e90ad756baa37f9753cce83c862eb0" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=q53Xcw"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=q53Xcw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=DEk2oJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=DEk2oJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Iy3G9J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Iy3G9J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=T1Txnj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=T1Txnj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=rOZWTJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=rOZWTJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=QlYufj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=QlYufj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=BeWXYj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=BeWXYj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=yuvjtJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=yuvjtJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=tW4Aoj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=tW4Aoj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=nBN4QJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=nBN4QJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=0O4ssj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=0O4ssj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=nJhkxJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=nJhkxJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=jkVKxj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=jkVKxj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=t0Y2vJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=t0Y2vJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=XKEJXj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=XKEJXj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/335593123" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/WindowsClient/default.aspx">WindowsClient</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=02e90ad756baa37f9753cce83c862eb0</feedburner:origLink></item><item><title>CUIDADO: A Interpretação Feita Pela Classe System.Web.HttpValueCollection Não É Reversível</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/335136863/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx</pheedo:origLink><pubDate>Mon, 14 Jul 2008 14:01:00 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14584</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14584.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14584</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14584</wfw:comment><description>&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Se executarem este código:&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;PRE class=code&gt;System.Collections.Specialized.&lt;SPAN&gt;NameValueCollection&lt;/SPAN&gt; queryString = System.Web.&lt;SPAN&gt;HttpUtility&lt;/SPAN&gt;.ParseQueryString(&lt;SPAN&gt;"noKey&amp;amp;=emptyKey&amp;amp;A=Akey"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;&lt;STRONG&gt;queryString&lt;/STRONG&gt; será, na verdade, uma referência para uma instância do &lt;A title="Classe Type" href="http://msdn2.microsoft.com/library/System.Type.aspx" target=_blank&gt;tipo&lt;/A&gt; &lt;STRONG&gt;System.Web.HttpValueCollection&lt;/STRONG&gt;.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;O que esta classe tem de bom é que o resultado da chamada ao &lt;A title="Método ToString" href="http://msdn.microsoft.com/library/System.Object.ToString.aspx" target=_blank&gt;método ToString&lt;/A&gt; é o conteúdo da colecção devidamente codificado e formatado para ser usado num URL.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Tal como acontece com a classe base (&lt;A title="System.Collections.Specialized.NameValueCollection Class" href="http://msdn.microsoft.com/library/System.Collections.Specialized.NameValueCollection.aspx" target=_blank&gt;NameValueCollection&lt;/A&gt;), há uma diferença entre a chave ser uma cadeia (&lt;EM&gt;string&lt;/EM&gt;) nula ou uma cadeia vazia na forma como é feita a interpretação da cadeia de entrada. Uma cadeia nula corresponde a não ser especificado parâmetro e uma cadeia vazia corresponde a ser especificado um parâmetro cujo nome é uma cadeia vazia.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Sendo assim, quando se chama &lt;STRONG&gt;ToString&lt;/STRONG&gt; numa instância retornada pelo &lt;A title="Método System.Web.HttpUtility.ParseQueryString" href="http://msdn.microsoft.com/library/System.Web.HttpUtility.ParseQueryString.aspx" target=_blank&gt;método System.Web.HttpUtility.ParseQueryString&lt;/A&gt; espera-se obter a cadeia de entrada (ou, pelo menos, uma que, quando interpretada, dê origem a uma colecção equivalente), certo? Na verdade, o que se obtém é isto: &lt;STRONG&gt;noKey&amp;amp;emptyKey&amp;amp;A=Akey&lt;/STRONG&gt;.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Reportei este &lt;A title="HttpValueCollection.FillFromString(string s, bool urlencoded, Encoding encoding) parsing does not have the reverse behavior of HttpValueCollection.ToString()" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355774" target=_blank&gt;erro&lt;/A&gt; no &lt;A title="Microsoft Connect" href="http://connect.microsoft.com/" target=_blank&gt;connect&lt;/A&gt;. Se acham que é importante e deve ser corrigido, &lt;A title="HttpValueCollection.FillFromString(string s, bool urlencoded, Encoding encoding) parsing does not have the reverse behavior of HttpValueCollection.ToString()" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355774" target=_blank&gt;votem&lt;/A&gt;.&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx&amp;amp;;subject=CUIDADO%3a+A+Interpreta%26%23231%3b%26%23227%3bo+Feita+Pela+Classe+System.Web.HttpValueCollection+N%26%23227%3bo+%26%23201%3b+Revers%26%23237%3bvel" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx&amp;amp;;title=CUIDADO%3a+A+Interpreta%26%23231%3b%26%23227%3bo+Feita+Pela+Classe+System.Web.HttpValueCollection+N%26%23227%3bo+%26%23201%3b+Revers%26%23237%3bvel" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx&amp;amp;title=CUIDADO%3a+A+Interpreta%26%23231%3b%26%23227%3bo+Feita+Pela+Classe+System.Web.HttpValueCollection+N%26%23227%3bo+%26%23201%3b+Revers%26%23237%3bvel" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx&amp;amp;;title=CUIDADO%3a+A+Interpreta%26%23231%3b%26%23227%3bo+Feita+Pela+Classe+System.Web.HttpValueCollection+N%26%23227%3bo+%26%23201%3b+Revers%26%23237%3bvel" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx&amp;amp;;title=CUIDADO%3a+A+Interpreta%26%23231%3b%26%23227%3bo+Feita+Pela+Classe+System.Web.HttpValueCollection+N%26%23227%3bo+%26%23201%3b+Revers%26%23237%3bvel&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/14/cuidade-a-interpreta-o-feita-pela-classe-system-web-httpvaluecollection-n-o-revers-vel.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14584" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=0345fdd7c8848484e2674cc778455056"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=0345fdd7c8848484e2674cc778455056"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=0345fdd7c8848484e2674cc778455056" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=dyvyxj"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=dyvyxj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=o8kmaJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=o8kmaJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Q9QTyJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Q9QTyJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=yXBFtj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=yXBFtj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=y5mIhJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=y5mIhJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=fa4Idj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=fa4Idj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=hxyYQj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=hxyYQj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=uu8qjJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=uu8qjJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=FKrkyj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=FKrkyj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=MePNtJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=MePNtJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=257ekj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=257ekj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=G5Cr3J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=G5Cr3J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=986jQj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=986jQj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=V33ZLJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=V33ZLJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=puFbej"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=puFbej" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/335136863" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=0345fdd7c8848484e2674cc778455056</feedburner:origLink></item><item><title>SAPO Summerbits, 1ª Edição</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/330318521/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx</pheedo:origLink><pubDate>Wed, 09 Jul 2008 00:48:07 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14509</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14509.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14509</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14509</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Está aí o &lt;a title="Summerbits - SAPO Software Livre" href="http://softwarelivre.sapo.pt/geral/wiki/SummerBits" target="_blank"&gt;SAPO Summerbits, 1ª Edição&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;    &lt;p align="justify"&gt;O programa &amp;quot;SAPO Summerbits” é inspirado no Google Summer of Code, onde são oferecidas bolsas a estudantes, de todos os graus de ensino ou proveniências (maiores de 18 anos e com vínculo a escola/universidade portuguesa), para que desenvolvam código para projectos de software livre, já existentes ou completamente novos. O SAPO, com o apoio de outras entidades, seleccionará as ideias com maior impacto tecnológico e social, financiando o seu desenvolvimento ao longo de três meses. A ambição do SAPO Summerbits é, acima de tudo, a de se tornar um programa de referência no meio académico português, mostrando ao mundo toda a capacidade criativa dos nossos estudantes.&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx&amp;amp;;subject=SAPO+Summerbits%2c+1%26%23170%3b+Edi%26%23231%3b%26%23227%3bo" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx&amp;amp;;title=SAPO+Summerbits%2c+1%26%23170%3b+Edi%26%23231%3b%26%23227%3bo" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx&amp;amp;title=SAPO+Summerbits%2c+1%26%23170%3b+Edi%26%23231%3b%26%23227%3bo" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx&amp;amp;;title=SAPO+Summerbits%2c+1%26%23170%3b+Edi%26%23231%3b%26%23227%3bo" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx&amp;amp;;title=SAPO+Summerbits%2c+1%26%23170%3b+Edi%26%23231%3b%26%23227%3bo&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/09/sapo-summerbits-1-edi-o.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14509" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=6cca9a3522d5bbaeb3616473b3267168"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=6cca9a3522d5bbaeb3616473b3267168"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=6cca9a3522d5bbaeb3616473b3267168" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=Qz8ZRS"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=Qz8ZRS" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=h9EFOJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=h9EFOJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=4KoaeJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=4KoaeJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=y38XVj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=y38XVj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Fmj71J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Fmj71J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Punbwj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Punbwj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=m6vXJj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=m6vXJj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=VfHNWJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=VfHNWJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=2ZpIQj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=2ZpIQj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=KkXWPJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=KkXWPJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=j0CzCj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=j0CzCj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=DvZD9J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=DvZD9J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=vwiMdj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=vwiMdj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=olozzJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=olozzJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=OQ0gMj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=OQ0gMj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/330318521" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Comunidade/default.aspx">Comunidade</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=6cca9a3522d5bbaeb3616473b3267168</feedburner:origLink></item><item><title>Lançamento do Isolator 4.3</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/325265460/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx</pheedo:origLink><pubDate>Wed, 02 Jul 2008 22:30:35 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14305</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14305.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14305</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14305</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Hoje, a &lt;a title="Typemock - Simplify Unit Testing!" href="http://www.typemock.com/" target="_blank"&gt;Typemock&lt;/a&gt; lançou a versão 4.3 do &lt;a title="Typemock Isolator - Serious Development" href="http://www.typemock.com/Product.html" target="_blank"&gt;Typemock Isolator&lt;/a&gt;. Descarreguem &lt;a title="Typemock Isolator Download" href="http://www.typemock.com/Downloads.php" target="_blank"&gt;daqui&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;O que há de novo? &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Suporte para &lt;a title="Ivonna" href="http://sm-art.biz/Ivonna.aspx" target="_blank"&gt;Ivonna&lt;/a&gt;.&amp;#160; Para quem desenvolve aplicações ASP.NET, o Ivonna é uma grande ferramenta, suportada pela plataforma Isolator, para simplificar a escrita de testes para &lt;a title="ASP.NET Developer Center" href="http://msdn.microsoft.com/asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Adição e APIs&amp;#160; do namespace Typemock.Integration.Packs para gestão de licenças através do Isolator, como usa o Ivonna.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Tal como tinha sido anunciado quando foi lançada, a versão 4.2 foi a última a suportar .NET 1.1. A versão 4.3 suporta apenas o ambiente de execução 2.0 e respectivas versões de &lt;a title="Microsoft Visual Studio" href="http://msdn.microsoft.com/vstudio/" target="_blank"&gt;Visual Studio&lt;/a&gt;: VS2005 e VS2008.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Para máquinas de 64 bit, agora existe apenas um instalador. (não esquecer desinstalar ambas as versões anteriores (32 e 64 bit) antes de instalar a versão 4.3.) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;&lt;strong&gt;RecorderManager.GetMockOf(instanceRef)&lt;/strong&gt; e &lt;strong&gt;MockManager.GetMockOf(instanceRef)&lt;/strong&gt;. Para o objecto controlador do objecto simulado (&lt;em&gt;mock&lt;/em&gt;) a partir de uma instância de objecto simulado. (&lt;a title="Getting mock object from an instance" href="http://blog.typemock.com/2008/06/getting-mock-object-from-instance.html" target="_blank"&gt;mais...&lt;/a&gt;). &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Problemas resolvidos:&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Problemas no suporte a DLINQ resolvidos.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Os construtores estáticos já são invocados correctamente quando se usa Natural Mocks.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Resolvido o problema em que era lançada uma excepção quando se simulavam interfaces (&amp;quot;Method XX in type &lt;strong&gt;IMyInterface&lt;/strong&gt; has no matching overload that returns &lt;strong&gt;TypeMock.Mock+a&lt;/strong&gt;).&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Resolvido o problema em que era lançada uma excepção quando o objecto simulado sobrepunha uma implementação de &lt;strong&gt;Equals&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Resolvido o problema que causava falhas na simulação de implementação explicita de interface com o mesmo nome.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Resolvido o problema com &lt;strong&gt;VerifyWithWait&lt;/strong&gt; em cenários de multithreading.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;Resolvido o problema em que era lançada uma &lt;strong&gt;NullReferenceException&lt;/strong&gt; quando se usava &lt;strong&gt;Auto Deploy&lt;/strong&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Mais informações:&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;&lt;a title="Isolator 4.3 Released!" href="http://blog.typemock.com/2008/07/isolator-43-released.html" target="_blank"&gt;Isolator 4.3 Released!&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;&lt;a title="Isolator 4.3 Release Notes" href="http://www.typemock.com/Docs/UserGuide/index.php?topic=ReleaseNotes43.html" target="_blank"&gt;Isolator 4.3 Release Notes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;&lt;a title="Getting mock object from an instance" href="http://blog.typemock.com/2008/06/getting-mock-object-from-instance.html" target="_blank"&gt;Getting mock object from an instance&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx&amp;amp;;subject=Lan%26%23231%3bamento+do+Isolator+4.3" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx&amp;amp;;title=Lan%26%23231%3bamento+do+Isolator+4.3" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx&amp;amp;title=Lan%26%23231%3bamento+do+Isolator+4.3" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx&amp;amp;;title=Lan%26%23231%3bamento+do+Isolator+4.3" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx&amp;amp;;title=Lan%26%23231%3bamento+do+Isolator+4.3&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/02/lan-amento-do-isolator-4-3.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14305" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=861beda25e97cbe587877ae93dc530af"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=861beda25e97cbe587877ae93dc530af"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=861beda25e97cbe587877ae93dc530af" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=KXushA"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=KXushA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=DC2uKJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=DC2uKJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=h5Hv5J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=h5Hv5J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=xWaCcj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=xWaCcj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=TAXX7J"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=TAXX7J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=CYClVj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=CYClVj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=o6kVdj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=o6kVdj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Z47XtJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Z47XtJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=qWR9wj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=qWR9wj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=ricRpJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=ricRpJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=w8msLj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=w8msLj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=T5CcwJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=T5CcwJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=WVaO4j"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=WVaO4j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=YnupPJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=YnupPJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=wI3W8j"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=wI3W8j" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/325265460" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Testes/default.aspx">Testes</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=861beda25e97cbe587877ae93dc530af</feedburner:origLink></item><item><title>Recebi O Prémio Microsoft MVP Pela 6ª Vez E: I FEEL GREAT</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/324402467/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx</pheedo:origLink><pubDate>Tue, 01 Jul 2008 22:31:41 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14280</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>2</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14280.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14280</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14280</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;div align="center"&gt;     &lt;br /&gt;&lt;a title="I Feel Great! - MVP" href="http://video.msn.com/video.aspx?vid=9fe51aa8-2c13-47f6-9d96-ba109ce014f1" target="_new"&gt;Video: I Feel Great! - MVP&lt;/a&gt; &lt;/div&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx&amp;amp;;subject=Recebi+O+Pr%26%23233%3bmio+Microsoft+MVP+Pela+6%26%23170%3b+Vez+E%3a+I+FEEL+GREAT" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx&amp;amp;;title=Recebi+O+Pr%26%23233%3bmio+Microsoft+MVP+Pela+6%26%23170%3b+Vez+E%3a+I+FEEL+GREAT" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx&amp;amp;title=Recebi+O+Pr%26%23233%3bmio+Microsoft+MVP+Pela+6%26%23170%3b+Vez+E%3a+I+FEEL+GREAT" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx&amp;amp;;title=Recebi+O+Pr%26%23233%3bmio+Microsoft+MVP+Pela+6%26%23170%3b+Vez+E%3a+I+FEEL+GREAT" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx&amp;amp;;title=Recebi+O+Pr%26%23233%3bmio+Microsoft+MVP+Pela+6%26%23170%3b+Vez+E%3a+I+FEEL+GREAT&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/07/01/recebi-o-pr-mio-microsoft-mvp-pela-6-vez-e-i-feel-great.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14280" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=91d62f24eabbfd9a66b675dc31bc802f"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=91d62f24eabbfd9a66b675dc31bc802f"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=91d62f24eabbfd9a66b675dc31bc802f" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=ncEU58"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=ncEU58" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=YJxHFJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=YJxHFJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Duo3gJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Duo3gJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=kFqEFj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=kFqEFj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=E4a9DJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=E4a9DJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=TsMQZj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=TsMQZj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=yrKRRj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=yrKRRj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=1QmCIJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=1QmCIJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Ca81Wj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Ca81Wj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=vYGjOJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=vYGjOJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=KlFbcj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=KlFbcj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=Tw0BQJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=Tw0BQJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=bpYAQj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=bpYAQj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=24RPvJ"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=24RPvJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=xqwnNj"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=xqwnNj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/324402467" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Comunidade/default.aspx">Comunidade</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=91d62f24eabbfd9a66b675dc31bc802f</feedburner:origLink></item><item><title>Porquê Usar Valores Aleatórios Para Testes Unitários</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/322885310/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx</pheedo:origLink><pubDate>Mon, 30 Jun 2008 00:38:15 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14228</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14228.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14228</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14228</wfw:comment><description>&lt;p align="justify"&gt;Numa &lt;a title="Usando Valores Aleatórios Para Testes Unitários" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/24/usando-valores-aleat-rios-para-testes-unit-rios.aspx" target="_blank"&gt;entrada&lt;/a&gt; anterior mencionei a minha &lt;a title="Random Generator For Unit Testing" href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PauloMorgado&amp;amp;ReleaseId=1196" target="_blank"&gt;biblioteca para geração de valores aleatórios&lt;/a&gt; para efeitos de testes unitários.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Recebi alguns comentários e questões interessantes nos meus blogues [&lt;a title="Using Random Values For Unit Testing" href="http://weblogs.asp.net/paulomorgado/archive/2008/06/24/using-random-values-for-unit-testing.aspx" target="_blank"&gt;^&lt;/a&gt;][&lt;a title="Using Random Values For Unit Testing" href="http://msmvps.com/blogs/paulomorgado/archive/2008/06/24/using-random-values-for-unit-testing.aspx" target="_blank"&gt;^&lt;/a&gt;][&lt;a title="Usando Valores Aleatórios Para Testes Unitários" href="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/24/usando-valores-aleat-rios-para-testes-unit-rios.aspx" target="_blank"&gt;^&lt;/a&gt;][&lt;a title="Usando Valores Aleatórios Para Testes Unitários" href="http://weblogs.pontonetpt.com/pjmorgado/posts/27674.aspx" target="_blank"&gt;^&lt;/a&gt;].&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;O &lt;a title="Simon Ince&amp;#39;s Blog - Ramblings of an Application Development Consultant in the UK" href="http://blogs.msdn.com/simonince" target="_blank"&gt;Simon&lt;/a&gt; diz que ele “geralmente quer que cada instância do teste que corre seja repetível em *todas* as execuções” e está “inclinado a usar a funcionalidade de fonte de dados do VSTS Unit Tests”. Eu não podia estar mais de acordo.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;O &lt;a title="Hugo Batista: Software Architecture and Engineering" href="http://blogs.msdn.com/hugobatista/" target="_blank"&gt;Hugo&lt;/a&gt; indicou-me o &lt;a title="Pex: Automated Exploratory Testing for .NET" href="http://research.microsoft.com/pex/" target="_blank"&gt;Pex&lt;/a&gt;. Parece interessante. Tenho de ver melhor isto.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Alguns comentários mostravam alguma preocupação para, no caso do teste falhar, não ser possível reproduzir as condições do teste e por isso não seria possível perceber a razão da falha do teste. Na minha opinião, todos os dados usados num teste que falha devem estar no relatório do teste (pelo menos, os dados que fizeram o teste falhar).&amp;#160; Quer os dados sejam previsíveis ou aleatórios.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Acho que a maioria dos comentários “contra” a minha ideia se deveram ao facto de não a ter explicado bem. Vou tentar fazer melhor agora.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Eu uso estes valores aleatórios quando o valor em si não é importante, apenas o facto de ser único.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Imagine-se uma classe &lt;strong&gt;Cliente&lt;/strong&gt; em que para dizer que duas instâncias se referem ao mesmo cliente é suficiente comparar o seu ID. Para testar o código e comparação não necessito nenhum conjunto reprodutível de dados. Apenos preciso que sejam difrentes ou&amp;#160; mesmo, dependendo do teste.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Imagine-se que se está a testar código de acesso a base de dados com uma &lt;em&gt;connection string&lt;/em&gt; de um elemento específico de &lt;a title="connectionStrings Element (ASP.NET Settings Schema)" href="http://msdn.microsoft.com/library/b6ffbb2e-a4d1-410e-8f7e-9755e92c65de.aspx" target="_blank"&gt;connection string settings&lt;/a&gt;. Não é importante saber qual o conteúdo da &lt;em&gt;connection string&lt;/em&gt; porque não se vai realmente aceder à base ded dados (isto é muito fácil de fazer com o &lt;a title="Typemock Isolator - Serious Development" href="http://www.typemock.com/Product.html" target="_blank"&gt;Isolator&lt;/a&gt;).&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Espero ter-me explicado melhor desta vez.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx&amp;amp;;subject=Porqu%26%23234%3b+Usar+Valores+Aleat%26%23243%3brios+Para+Testes+Unit%26%23225%3brios" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx&amp;amp;;title=Porqu%26%23234%3b+Usar+Valores+Aleat%26%23243%3brios+Para+Testes+Unit%26%23225%3brios" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx&amp;amp;title=Porqu%26%23234%3b+Usar+Valores+Aleat%26%23243%3brios+Para+Testes+Unit%26%23225%3brios" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx&amp;amp;;title=Porqu%26%23234%3b+Usar+Valores+Aleat%26%23243%3brios+Para+Testes+Unit%26%23225%3brios" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx&amp;amp;;title=Porqu%26%23234%3b+Usar+Valores+Aleat%26%23243%3brios+Para+Testes+Unit%26%23225%3brios&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/30/porqu-usar-valores-aleat-rios-para-testes-unit-rios.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14228" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=5bfd924b24c6f7cda9f5baa81064df4c"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=5bfd924b24c6f7cda9f5baa81064df4c"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=5bfd924b24c6f7cda9f5baa81064df4c" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=MEGk0p"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=MEGk0p" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=3Gb9vI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=3Gb9vI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=pcaA1I"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=pcaA1I" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=UHpuci"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=UHpuci" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=4TrRII"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=4TrRII" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=H8UIei"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=H8UIei" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=CDExYi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=CDExYi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=VKHRVI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=VKHRVI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=KpSwLi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=KpSwLi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=EMW9UI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=EMW9UI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=ntP8zi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=ntP8zi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=9GOtJI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=9GOtJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=GhY5Vi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=GhY5Vi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=iAiuvI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=iAiuvI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=pGAeVi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=pGAeVi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/322885310" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Testes/default.aspx">Testes</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=5bfd924b24c6f7cda9f5baa81064df4c</feedburner:origLink></item><item><title>Substituindo Assemblies Carregadas</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/322812894/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx</pheedo:origLink><pubDate>Sun, 29 Jun 2008 21:53:29 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14225</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14225.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14225</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14225</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Recentemente perguntaram-me se era possível substituír as &lt;em&gt;assemblies&lt;/em&gt; carregadas por uma &lt;a title="Windows Service Applications" href="http://msdn.microsoft.com/library/y817hyb6.aspx" target="_blank"&gt;aplicação Windows Service&lt;/a&gt; implementada em &lt;a title=".NET Framework Developer Center" href="http://msdn.microsoft.com/netframework/" target="_blank"&gt;.NET&lt;/a&gt; enquanto esta corre, como o &lt;a title="ASP.NET Developer Center" href="http://msdn.microsoft.com/asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt;. Tal como no ASP.NET, eventos de início e de fifinalização da aplicação eram necessários.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;A solução até é simples. A aplicação Windows Service passa a ser apenas um carregador que não tem qualquer referência para as &lt;em&gt;assemblies&lt;/em&gt; carregadas que poderão sofrer alterações e ter uma &lt;a title="Assembly Class" href="http://msdn.microsoft.com/library/system.reflection.assembly.aspx" target="_blank"&gt;assembly&lt;/a&gt; com um &lt;a title="Assembly.EntryPoint Property" href="http://msdn.microsoft.com/library/system.reflection.assembly.entrypoint.aspx" target="_blank"&gt;ponto de entrada&lt;/a&gt; que funciona como o evento de início. Esta &lt;em&gt;assembly&lt;/em&gt; deve ser carregada num novo &lt;a title="AppDomain Class" href="http://msdn.microsoft.com/library/system.appdomain.aspx" target="_blank"&gt;AppDomain&lt;/a&gt; com &lt;a title="AppDomain.ShadowCopyFiles Property" href="http://msdn.microsoft.com/library/system.appdomain.shadowcopyfiles.aspx" target="_blank"&gt;ShadowCopyFiles&lt;/a&gt; definido como &lt;strong&gt;true&lt;/strong&gt;. O evento de finalização é tratado tratando o evento &lt;a title="AppDomain.DomainUnload Event" href="http://msdn.microsoft.com/library/system.appdomain.domainunload.aspx" target="_blank"&gt;DomainUnload&lt;/a&gt; do AppDomian onde as &lt;em&gt;assemblies&lt;/em&gt; a correr foram carregadas.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Se se quiser que a &lt;em&gt;assembly&lt;/em&gt; a correr, assim como as &lt;em&gt;assemblies&lt;/em&gt; por esta referenciadas sejam descarregadas e novamente carregadas quando ocorre uma modificação nos ficheiros destas &lt;em&gt;assemblies&lt;/em&gt;, pode-se recorrer a um &lt;a title="FileSystemWatcher Class" href="http://msdn.microsoft.com/library/system.io.filesystemwatcher.aspx" target="_blank"&gt;FileSystemWatcher&lt;/a&gt;, embora eu preferisse anular este comportamento no ASP.NET, não copiá-lo.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;O carregador pode ser algo tão simples como isto:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Program
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Thread &lt;/span&gt;thread = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;
    &lt;span style="color:blue;"&gt;private static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AppDomain &lt;/span&gt;appDomain = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;static void &lt;/span&gt;Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args)
    {
        &lt;span style="color:blue;"&gt;while &lt;/span&gt;(&lt;span style="color:blue;"&gt;true&lt;/span&gt;)
        {
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine();
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Options:&amp;quot;&lt;/span&gt;);
            &lt;span style="color:blue;"&gt;if &lt;/span&gt;(appDomain == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
            {
                &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;    L - Load&amp;quot;&lt;/span&gt;);
            }
            &lt;span style="color:blue;"&gt;else
            &lt;/span&gt;{
                &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;    U - Unload&amp;quot;&lt;/span&gt;);
            }
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;    X - Exit&amp;quot;&lt;/span&gt;);

            &lt;span style="color:blue;"&gt;switch &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.ReadKey().KeyChar)
            {
                &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;'l'&lt;/span&gt;:
                &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;'L'&lt;/span&gt;:
                    thread = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;(Load);
                    thread.Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Runner&amp;quot;&lt;/span&gt;;
                    thread.Start(args);
                    &lt;span style="color:blue;"&gt;while &lt;/span&gt;(appDomain == &lt;span style="color:blue;"&gt;null&lt;/span&gt;) ;
                    &lt;span style="color:blue;"&gt;break&lt;/span&gt;;
                &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;'u'&lt;/span&gt;:
                &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;'U'&lt;/span&gt;:
                    Unload();
                    &lt;span style="color:blue;"&gt;break&lt;/span&gt;;
                &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;'x'&lt;/span&gt;:
                &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;'X'&lt;/span&gt;:
                    Unload();
                    &lt;span style="color:blue;"&gt;return&lt;/span&gt;;
            }
        }
    }

    &lt;span style="color:blue;"&gt;private static void &lt;/span&gt;Load(&lt;span style="color:blue;"&gt;object &lt;/span&gt;obj)
    {
        &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args = obj &lt;span style="color:blue;"&gt;as string&lt;/span&gt;[];

        &lt;span style="color:#2b91af;"&gt;AppDomainSetup &lt;/span&gt;appDomainSetup = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AppDomainSetup&lt;/span&gt;();
        appDomainSetup.ApplicationBase = args[0];
        appDomainSetup.PrivateBinPath = args[0];
        appDomainSetup.ShadowCopyFiles = &lt;span style="color:#a31515;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;;

        appDomain = &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CreateDomain(&lt;span style="color:#a31515;"&gt;&amp;quot;Runner&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CurrentDomain.Evidence, appDomainSetup);

        appDomain.ExecuteAssemblyByName(&lt;span style="color:#a31515;"&gt;&amp;quot;ConsoleApplication&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CurrentDomain.Evidence, &lt;span style="color:blue;"&gt;new string&lt;/span&gt;[0]);
    }

    &lt;span style="color:blue;"&gt;private static void &lt;/span&gt;Unload()
    {
        &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.Unload(appDomain);
        appDomain = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;
        thread = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;O carregador recebe o caminho para a pasta onde estão as &lt;em&gt;assemblies&lt;/em&gt; a carregar e o nome da &lt;em&gt;assembly&lt;/em&gt; a correr.&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;A &lt;em&gt;assembly&lt;/em&gt; a correr pode ser algo com isto:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Program
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;static readonly &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DateTime &lt;/span&gt;dateTime = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now;

    &lt;span style="color:blue;"&gt;static void &lt;/span&gt;Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args)
    {
        &lt;span style="color:#2b91af;"&gt;AppDomain&lt;/span&gt;.CurrentDomain.DomainUnload += &lt;span style="color:blue;"&gt;delegate
        &lt;/span&gt;{
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine();
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Unloading: {0}&amp;quot;&lt;/span&gt;, dateTime);
        };

        System.Reflection.&lt;span style="color:#2b91af;"&gt;Assembly &lt;/span&gt;assembly = System.Reflection.&lt;span style="color:#2b91af;"&gt;Assembly&lt;/span&gt;.GetExecutingAssembly();

        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Loading: {0}&amp;quot;&lt;/span&gt;, dateTime);
        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Assembly: {0}&amp;quot;&lt;/span&gt;, assembly.FullName);
        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Location: {0}&amp;quot;&lt;/span&gt;, assembly.Location);

        &lt;span style="color:#2b91af;"&gt;FileInfo &lt;/span&gt;fileInfo = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;FileInfo&lt;/span&gt;(assembly.Location);
        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Location Dates: CreationTime={0}, LastWriteTime={1}, LastAccessTime={2}&amp;quot;&lt;/span&gt;,
            fileInfo.CreationTime, fileInfo.LastWriteTime, fileInfo.LastAccessTime);

        &lt;span style="color:blue;"&gt;while &lt;/span&gt;(&lt;span style="color:blue;"&gt;true&lt;/span&gt;)
        {
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.Write(&lt;span style="color:#a31515;"&gt;'.'&lt;/span&gt;);
            &lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;.Sleep(100);
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Com este “sistema” pode-se carregar ou descarregar e substituír as &lt;em&gt;assemblies&lt;/em&gt; que estão a correr quando se quiser.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx&amp;amp;;subject=Substituindo+Assemblies+Carregadas" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx&amp;amp;;title=Substituindo+Assemblies+Carregadas" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx&amp;amp;title=Substituindo+Assemblies+Carregadas" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx&amp;amp;;title=Substituindo+Assemblies+Carregadas" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx&amp;amp;;title=Substituindo+Assemblies+Carregadas&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/29/substituindo-assemblies-carregadas.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=14225" width="1" height="1"&gt;&lt;br style="clear: both;"/&gt;
      &lt;a href="http://www.pheedo.com/click.phdo?s=189f325dfa4aba82c9c7cbb73781cc6a"&gt;&lt;img alt="" style="border: 0;" border="0" src="http://www.pheedo.com/img.phdo?s=189f325dfa4aba82c9c7cbb73781cc6a"/&gt;&lt;/a&gt;
  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=189f325dfa4aba82c9c7cbb73781cc6a" style="display: none;" border="0" height="1" width="1" alt=""/&gt;
&lt;p&gt;&lt;a href="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?a=4GGHzP"&gt;&lt;img src="http://feeds.paulomorgado.net/~a/PauloMorgadoPT?i=4GGHzP" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=kUmyfI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=kUmyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=tRvdmI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=tRvdmI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=cyeEfi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=cyeEfi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=C3wxSI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=C3wxSI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=zIhHYi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=zIhHYi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=HlmBri"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=HlmBri" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=FtRLnI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=FtRLnI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=9bbybi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=9bbybi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=fr83TI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=fr83TI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=UXIcbi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=UXIcbi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=nhLliI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=nhLliI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=9Chari"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=9Chari" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=v0j1yI"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=v0j1yI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?a=nbSspi"&gt;&lt;img src="http://feeds.paulomorgado.net/~f/PauloMorgadoPT?i=nbSspi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~4/322812894" height="1" width="1"/&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/tags/Desenvolvimento/default.aspx">Desenvolvimento</category><feedburner:origLink>http://www.pheedo.com/click.phdo?i=189f325dfa4aba82c9c7cbb73781cc6a</feedburner:origLink></item><item><title>Usando Valores Aleatórios Para Testes Unitários</title><link>http://feeds.paulomorgado.net/~r/PauloMorgadoPT/~3/318487851/click.phdo</link>
<pheedo:origLink>http://www.arquitecturadesoftware.org/blogs/paulomorgado/archive/2008/06/24/usando-valores-aleat-rios-para-testes-unit-rios.aspx</pheedo:origLink><pubDate>Mon, 23 Jun 2008 23:52:09 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:14194</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>3</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/paulomorgado/comments/14194.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/paulomorgado/commentrss.aspx?PostID=14194</wfw:commentRss><wfw:comment>http://www.arquitecturadesoftware.org/blogs/paulomorgado/rsscomments.aspx?PostID=14194</wfw:comment><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Quando escrevo os meus testes unitários não gosto de usar valores fixos no código porque ou acabo por usar sempre os mesmos valores ou, por causa disso, os testes podem passar por coincidência.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Com o passar do tempo, desenvolvi uma classe utilitária para gerar valores aleatórios para usar em testes unitários.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;PauloMorgado.VisualStudio.TestTools.UnitTesting
{
    &lt;span style="color:blue;"&gt;public static class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;RandomGenerator
    &lt;/span&gt;{
        &lt;span style="color:blue;"&gt;public static bool &lt;/span&gt;Boolean();
        &lt;span style="color:blue;"&gt;public static string &lt;/span&gt;String();
        &lt;span style="color:blue;"&gt;public static string &lt;/span&gt;String(&lt;span style="color:blue;"&gt;string &lt;/span&gt;prefix);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int8();
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int8(&lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int8(&lt;span style="color:blue;"&gt;short &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int16();
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int16(&lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int16(&lt;span style="color:blue;"&gt;short &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static int &lt;/span&gt;Int32();
        &lt;span style="color:blue;"&gt;public static int &lt;/span&gt;Int32(&lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static int &lt;/span&gt;Int32(&lt;span style="color:blue;"&gt;int &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum Enum&amp;lt;TEnum&amp;gt;();
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum EnumFlagsWith&amp;lt;TEnum&amp;gt;(TEnum flagsToAdd);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum EnumFlagsWithout&amp;lt;TEnum&amp;gt;(TEnum flagsToRemove);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum Enum&amp;lt;TEnum&amp;gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum Enum&amp;lt;TEnum&amp;gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;System.&lt;span style="color:#2b91af;"&gt;Guid &lt;/span&gt;Guid();
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p&gt;Isto é algo que eu gostaria de ver em plataformas de &lt;em&gt;mocks&lt;/em&gt; (como &lt;a title="Typemock Isolator - Serious Development" href="http://www.typemock.com/Product.html" target="_blank"&gt;Typemock Isolator&lt;/a&gt;, &lt;a title="Rhino.Mocks" href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank"&gt;Rhino.Mocks&lt;/a&gt; ou &lt;a title="MoQ" href="http://code.google.com/p/moq/" target="_blank"&gt;MoQ&lt;/a&gt;).&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p&gt;Ainda é um trabalho em