<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Vincent Lainé (dev01, phenixdotnet)</title>
	<atom:link href="https://blog.developpez.com/phenixdotnet/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/phenixdotnet</link>
	<description></description>
	<lastBuildDate>Thu, 19 Jul 2012 20:57:39 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Entity Framework est open source !</title>
		<link>https://blog.developpez.com/phenixdotnet/p11168/net/entity_framework_est_open_source</link>
		<comments>https://blog.developpez.com/phenixdotnet/p11168/net/entity_framework_est_open_source#comments</comments>
		<pubDate>Thu, 19 Jul 2012 20:57:39 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;équipe en charge d&#8217;Entity Framework vient de l&#8217;annoncer : EF est maintenant un composant Open Source (sous licence Apache 2.0) tout comme la stack ASP.NET. L&#8217;ensemble des sources d&#8217;EF est disponible sur codeplex à l&#8217;adresse http://entityframework.codeplex.com/. Alors concrètement qu&#8217;est-ce que cela va changer pour nous les utilisateurs ? Eh bien au-delà des avantages à disposer du code source pour comprendre comment tout cela fonctionne et/ou apporter des corrections/modifications, EF reste un produit MS officiel. Cela [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;équipe en charge d&rsquo;Entity Framework vient de l&rsquo;annoncer : EF est maintenant un composant Open Source (sous licence Apache 2.0) tout comme la stack ASP.NET.</p>
<p>L&rsquo;ensemble des sources d&rsquo;EF est disponible sur codeplex à l&rsquo;adresse http://entityframework.codeplex.com/.</p>
<p>Alors concrètement qu&rsquo;est-ce que cela va changer pour nous les utilisateurs ? Eh bien au-delà des avantages à disposer du code source pour comprendre comment tout cela fonctionne et/ou apporter des corrections/modifications, EF reste un produit MS officiel.<br />
Cela veut dire que l&rsquo;équipe qui travaille actuellement sur le produit va continuer et que MS continuera à fournir le support pour EF.</p>
<p>Le texte de l&rsquo;annonce : http://blogs.msdn.com/b/adonet/archive/2012/07/19/entity-framework-and-open-source.aspx</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[MVC 3] Utiliser une vue définie dans une autre zone que la zone courante</title>
		<link>https://blog.developpez.com/phenixdotnet/p10800/net/mvc_3_utiliser_une_vue_definie_dans_une</link>
		<comments>https://blog.developpez.com/phenixdotnet/p10800/net/mvc_3_utiliser_une_vue_definie_dans_une#comments</comments>
		<pubDate>Mon, 12 Mar 2012 07:00:00 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Général]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous utilisez les zones (et vous devriez ) il vous est surement arrivé de vouloir faire référence au layout par défaut depuis une vue définie dans votre zone. Prenons par exemple l&#8217;organisation suivante et le cas ou la vue &#171;&#160;Index&#160;&#187; de la zone &#171;&#160;MyArea&#160;&#187; fait référence au layout &#171;&#160;_Layout&#160;&#187; par défaut : Cela fonctionne très bien tant qu&#8217;il n&#8217;y a pas d'&#160;&#187;Action&#160;&#187; de défini dans le layout de base. Ajoutons une instruction d&#8217;inclusion de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si vous utilisez les zones (et vous devriez <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&#39;?il" src="http://blog.developpez.com/media/117/wlEmoticon-winkingsmile.png" /> ) il vous est surement arrivé de vouloir faire référence au layout par défaut depuis une vue définie dans votre zone.</p>
<p><span id="more-68"></span></p>
<p>Prenons par exemple l&rsquo;organisation suivante et le cas ou la vue &laquo;&nbsp;Index&nbsp;&raquo; de la zone &laquo;&nbsp;MyArea&nbsp;&raquo; fait référence au layout &laquo;&nbsp;_Layout&nbsp;&raquo; par défaut :</p>
<p><a href="http://blog.developpez.com/media/117/MVC_Area_Orga.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MVC_Area_Orga" border="0" alt="MVC_Area_Orga" src="http://blog.developpez.com/media/117/MVC_Area_Orga_thumb.png" width="211" height="516" /></a></p>
<p>Cela fonctionne très bien tant qu&rsquo;il n&rsquo;y a pas d'&nbsp;&raquo;Action&nbsp;&raquo; de défini dans le layout de base. </p>
<p>Ajoutons une instruction d&rsquo;inclusion de la vue partielle &laquo;&nbsp;_LogOnStatus&nbsp;&raquo; comme ceci :</p>
<p>@Html.Action(&laquo;&nbsp;LogOnStatus&nbsp;&raquo;, &laquo;&nbsp;Accounts&nbsp;&raquo;)</p>
<p>La page d&rsquo;accueil fonctionne toujours correctement et la vue partielle est bien affichée. Naviguons maintenant vers notre zone et patatra ! Le moteur MVC nous renvoi l&rsquo;erreur suivante lors de l&rsquo;accès à une page de votre zone (Par exemple lors de l&rsquo;accès à l&rsquo;url /MyArea/Test) :</p>
<p><a href="http://blog.developpez.com/media/117/MVC_Area_Exception.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MVC_Area_Exception" border="0" alt="MVC_Area_Exception" src="http://blog.developpez.com/media/117/MVC_Area_Exception_thumb.png" width="612" height="369" /></a></p>
<p>Le message d&rsquo;erreur semble parlant mais &#8230; il n&rsquo;est pas correct <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Triste" src="http://blog.developpez.com/media/117/wlEmoticon-sadsmile.png" />. Le problème ne vient pas du contrôleur de la vue mais de l&rsquo;action du layout qui tente de trouver un contrôleur &laquo;&nbsp;AccountsController&nbsp;&raquo; qui possède une action &laquo;&nbsp;LogOnStatus&nbsp;&raquo; dans la zone en cours. En effet par défaut lorsqu&rsquo;un contrôleur est recherché, la zone en cours est prise comme contexte.</p>
<p>Pour remédier à ce problème il suffit d&rsquo;utiliser, dans le layout de base, la surcharge de Html.Action qui permet de spécifier la zone et de lui passer une nom de zone vide afin de cibler la &laquo;&nbsp;zone par défaut&nbsp;&raquo; :</p>
<p>Exemple :</p>
<p>@Html.Action(&laquo;&nbsp;LogOnStatus&nbsp;&raquo;, &laquo;&nbsp;Accounts&nbsp;&raquo;, new { area = &laquo;&nbsp;&nbsp;&raquo; })</p>
<p> </p>
<p> </p>
<p>C&rsquo;est tout bête mais encore faut-il le savoir <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&#39;?il" src="http://blog.developpez.com/media/117/wlEmoticon-winkingsmile.png" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yield return et test de paramètres</title>
		<link>https://blog.developpez.com/phenixdotnet/p10801/net/yield_return_et_test_de_parametres</link>
		<comments>https://blog.developpez.com/phenixdotnet/p10801/net/yield_return_et_test_de_parametres#comments</comments>
		<pubDate>Fri, 09 Mar 2012 08:00:00 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vous connaissez surement l’instruction “yield return” de C# ? Non ? alors je vous invites à commencer par ici : http://msdn.microsoft.com/fr-fr/library/9k7k7cf0.aspx Maintenant petite devinette : Soit la méthode suivante : public&#160;static&#160;IEnumerable&#60;string&#62; TestMethod(string filter) {&#160;&#160;&#160;&#160; if (string.IsNullOrEmpty(filter))&#160; throw&#160;new&#160;ArgumentNullException(&#34;filter&#34;); &#160;&#160;&#160;&#160; foreach (var item in values)&#160;&#160;&#160;&#160; {&#160; if (item.Contains(filter))&#160;&#160;&#160;&#160;&#160; yield&#160;return item;&#160;&#160;&#160;&#160; } } private&#160;static&#160;List&#60;string&#62; values = new&#160;List&#60;string&#62;() { &#34;item 1&#34;, &#34;item 2&#34;, &#34;item 3&#34;, &#34;item 1.1&#34;, &#34;item 1.2&#34; }; &#160; et le test unitaire suivant : [TestMethod] [ExpectedException(System.ArgumentNullException)] [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vous connaissez surement l’instruction “yield return” de C# ? Non ? alors je vous invites à commencer par ici : <a title="http://msdn.microsoft.com/fr-fr/library/9k7k7cf0.aspx" href="http://msdn.microsoft.com/fr-fr/library/9k7k7cf0.aspx">http://msdn.microsoft.com/fr-fr/library/9k7k7cf0.aspx</a></p>
<p><span id="more-69"></span></p>
<p>Maintenant petite devinette : </p>
<p>Soit la méthode suivante : </p>
<pre style="font-family: consolas; background: white; color: black"><span style="color: blue"> public</span>&#160;<span style="color: blue">static</span>&#160;<span style="color: #2b91af">IEnumerable</span>&lt;<span style="color: blue">string</span>&gt; TestMethod(<span style="color: blue">string</span> filter)<br /> {<br />&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (<span style="color: blue">string</span>.IsNullOrEmpty(filter))<br />&#160; <span style="color: blue">throw</span>&#160;<span style="color: blue">new</span>&#160;<span style="color: #2b91af">ArgumentNullException</span>(<span style="color: #a31515">&quot;filter&quot;</span>);<br /> <br />&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (<span style="color: blue">var</span> item <span style="color: blue">in</span> values)<br />&#160;&#160;&#160;&#160; {<br />&#160; <span style="color: blue">if</span> (item.Contains(filter))<br />&#160;&#160;&#160;&#160;&#160; <span style="color: blue">yield</span>&#160;<span style="color: blue">return</span> item;<br />&#160;&#160;&#160;&#160; }<br /> }<br /> <br /> <span style="color: blue">private</span>&#160;<span style="color: blue">static</span>&#160;<span style="color: #2b91af">List</span>&lt;<span style="color: blue">string</span>&gt; values = <span style="color: blue">new</span>&#160;<span style="color: #2b91af">List</span>&lt;<span style="color: blue">string</span>&gt;() { <span style="color: #a31515">&quot;item 1&quot;</span>, <span style="color: #a31515">&quot;item 2&quot;</span>, <span style="color: #a31515">&quot;item 3&quot;</span>, <span style="color: #a31515">&quot;item 1.1&quot;</span>, <span style="color: #a31515">&quot;item 1.2&quot;</span> };</pre>
<p>&#160;</p>
<p>et le test unitaire suivant : </p>
<pre style="font-family: consolas; background: white; color: black"> [TestMethod]<br /> [ExpectedException(System.<span style="color: #2b91af">ArgumentNullException</span>)]<br /> <span style="color: blue">public</span>&#160;<span style="color: blue">void</span> TestMethod_FilterIsNull_Test()<br /> {<br />&#160;&#160;&#160;&#160; <span style="color: blue">string</span> filter = <span style="color: blue">string</span>.Empty;<br />&#160;&#160;&#160;&#160; <span style="color: #2b91af">Program</span>.TestMethod(filter);<br /> }</pre>
<p>Quel est le résultat de ce test unitaire ?</p>
<p>tic, tac, tic, tac …</p>
<p>&#160;</p>
<p>Ce test échoue ! La question à 10 ct, c’est pourquoi ? (J’avoue, c’est un de mes collègue qui a trouvé la réponse <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sourire" src="http://blog.developpez.com/media/117/wlEmoticon-smile.png" />)</p>
<p>La réponse se trouve dans la MSDN cité en début d’article (ou dans ILDASM <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&#39;œil" src="http://blog.developpez.com/media/117/wlEmoticon-winkingsmile.png" />) : Lors de l’utilisation d’une instruction “yield return”, une classe encapsulant le contenu de la méthode est générée par le compilateur. Cette classe implémente les interfaces IEnumerable et IEnumerable&lt;T&gt;. Le code effectif de la méthode est “déplacer” dans la méthode “MoveNext” de la nouvelle classe générée, y compris la vérification de notre argument “filter”.</p>
<p>L’impact de tout ça c’est que la vérification de la valeur de “filter” ne sera faite que lorsque l’on commence à énumérer les valeurs possible.</p>
<p>Le tests unitaires tel qu’il est écrit ne parcours jamais les résultats de la méthode TestMethod et donc ne déclenchera pas d’appel à la méthode “MoveNext” de la classe généré par le compilateur.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VS 2011 et .NET Framework 4.5 Beta !</title>
		<link>https://blog.developpez.com/phenixdotnet/p10745/net/vs_2011_et_net_framework_4_5_beta</link>
		<comments>https://blog.developpez.com/phenixdotnet/p10745/net/vs_2011_et_net_framework_4_5_beta#comments</comments>
		<pubDate>Thu, 23 Feb 2012 19:36:42 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[C&#8217;est maintenant officiel, la bêta de VS 2011 et du framework .NET 4.5 seront disponible le 29 février ! Coté VS 2011, c&#8217;est principalement la refonte (partielle) de l&#8217;EDI ainsi que les outils liés à la gestion du cycle de vie d&#8217;une application qui seront les nouveautés à essayer. Pour plus d&#8217;informations sur cette annonce : L&#8217;annonce de la date de dispo sur le blog de Somasegar Un aperçut du nouveau look de VS 2011 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>C&rsquo;est maintenant officiel, la bêta de VS 2011 et du framework .NET 4.5 seront disponible le 29 février !</p>
<p>Coté VS 2011, c&rsquo;est principalement la refonte (partielle) de l&rsquo;EDI ainsi que les outils liés à la gestion du cycle de vie d&rsquo;une application qui seront les nouveautés à essayer.</p>
<p>Pour plus d&rsquo;informations sur cette annonce :<br />
<a href="http://blogs.msdn.com/b/somasegar/archive/2012/02/23/the-road-to-visual-studio-11-beta-and-net-4-5-beta.aspx">L&rsquo;annonce de la date de dispo sur le blog de Somasegar</a></p>
<p><a href="http://blogs.msdn.com/b/jasonz/archive/2012/02/23/sneak-preview-of-visual-studio-11-and-net-framework-4-5-beta.aspx">Un aperçut du nouveau look de VS 2011 sur le blog de Jason Zander</a></p>
<p><a href="http://blogs.msdn.com/b/visualstudio/archive/2012/02/23/introducing-the-new-developer-experience.aspx">Plus de détails sur le look de l&rsquo;EDI sur le blog de l&rsquo;équipe VS</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[FUN] Visual studio Achievements</title>
		<link>https://blog.developpez.com/phenixdotnet/p10533/net/fun_visual_studio_achievements</link>
		<comments>https://blog.developpez.com/phenixdotnet/p10533/net/fun_visual_studio_achievements#comments</comments>
		<pubDate>Thu, 24 Nov 2011 10:28:15 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Général]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Un nouvel addin pour Visual Studio va bientôt être mis à disposition par l&#8217;équipe de Channel 9. Son but ? Fournir une liste de succès qui seront débloqués en fonction du code que vous écrivez ! Totalement indispensable pour pouvoir se la raconter à la pause café ^^? &#171;&#160;Quoi ? tu n&#8217;as pas encore débloquer le succès &#171;&#160;Ecrire une méthode utilisant un dynamic, 5 délégués et 15 requêtes linq&#160;&#187; Noob va.&#160;&#187; Ou pour mettre dans [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un nouvel addin pour Visual Studio va bientôt être mis à disposition par l&rsquo;équipe de Channel 9. </p>
<p>Son but ? Fournir une liste de succès qui seront débloqués en fonction du code que vous écrivez !</p>
<p>Totalement indispensable pour pouvoir se la raconter à la pause café ^^?</p>
<p>&laquo;&nbsp;Quoi ? tu n&rsquo;as pas encore débloquer le succès &laquo;&nbsp;Ecrire une méthode utilisant un dynamic, 5 délégués et 15 requêtes linq&nbsp;&raquo; Noob va.&nbsp;&raquo;</p>
<p>Ou pour mettre dans un CV :</p>
<p>&laquo;&nbsp;Expérience pro : Tout les succès VS 2010 débloqué&nbsp;&raquo;</p>
<p> </p>
<p>Bref ça ne sert à rien mais c&rsquo;est fun. </p>
<p>Pour plus d&rsquo;info c&rsquo;est par ici : </p>
<p><a title="http://dev9.channel9.msdn.com/blogs/c9team/Coming-Soon-Visual-Studio-Achievements" href="http://dev9.channel9.msdn.com/blogs/c9team/Coming-Soon-Visual-Studio-Achievements">http://dev9.channel9.msdn.com/blogs/c9team/Coming-Soon-Visual-Studio-Achievements</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Constructeurs et exceptions</title>
		<link>https://blog.developpez.com/phenixdotnet/p10437/net/constructeurs_et_exceptions</link>
		<comments>https://blog.developpez.com/phenixdotnet/p10437/net/constructeurs_et_exceptions#comments</comments>
		<pubDate>Mon, 24 Oct 2011 17:11:56 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vous avez surement déjà vu ou déclenché des exceptions depuis un constructeur .NET. Mais connaissez-vous vraiment le comportement sous-jacent lorsque cela arrive ? Soit ce code : public class TestCtor { /// &#60;summary&#62; /// Initializes a new instance of the &#60;see cref=&#34;T:TestCtor&#34;/&#62; class. /// &#60;/summary&#62; public TestCtor() { throw new Exception(&#34;test&#34;); } /// &#60;summary&#62; /// Finalizes an instance of the &#60;see cref=&#34;T:TestCtor&#34;/&#62; class. /// &#60;/summary&#62; ~TestCtor() { Console.WriteLine(&#34;Object is alive ! Hashcode : {0}&#34;, this.GetHashCode()); [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vous avez surement déjà vu ou déclenché des exceptions depuis un constructeur .NET.</p>
<p>Mais connaissez-vous vraiment le comportement sous-jacent lorsque cela arrive ?</p>
<p><span id="more-65"></span></p>
<p>Soit ce code :</p>
<pre style="font-family:Consolas;font-size:13;color:black;background:white;">
<span style="color:blue;">public</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">TestCtor</span>
{
    <span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span>
    <span style="color:gray;">///</span><span style="color:green;"> Initializes a new instance of the </span><span style="color:gray;">&lt;see cref=</span><span style="color:gray;">&quot;T:TestCtor&quot;</span><span style="color:gray;">/&gt;</span><span style="color:green;"> class.</span>
    <span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span>
    <span style="color:blue;">public</span> TestCtor()
    {
        <span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">Exception</span>(<span style="color:#a31515;">&quot;test&quot;</span>);
    }

    <span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span>
    <span style="color:gray;">///</span><span style="color:green;"> Finalizes an instance of the </span><span style="color:gray;">&lt;see cref=</span><span style="color:gray;">&quot;T:TestCtor&quot;</span><span style="color:gray;">/&gt;</span><span style="color:green;"> class.</span>
    <span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span>
    ~TestCtor()
    {
        <span style="color:#2b91af;">Console</span>.WriteLine(<span style="color:#a31515;">&quot;Object is alive ! Hashcode : {0}&quot;</span>, <span style="color:blue;">this</span>.GetHashCode());
    }
}</pre>
<p>et son utilisation :</p>
<pre style="font-family:Consolas;font-size:13;color:black;background:white;">
<span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span>
<span style="color:gray;">///</span><span style="color:green;"> Defines the program entry point. </span>
<span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span>
<span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;param name=</span><span style="color:gray;">&quot;args&quot;</span><span style="color:gray;">&gt;</span><span style="color:green;">An array of </span><span style="color:gray;">&lt;see cref=</span><span style="color:gray;">&quot;T:System.String&quot;</span><span style="color:gray;">/&gt;</span><span style="color:green;"> containing command line parameters.</span><span style="color:gray;">&lt;/param&gt;</span>
<span style="color:blue;">private</span> <span style="color:blue;">static</span> <span style="color:blue;">void</span> Main(<span style="color:blue;">string</span>[] args)
{
    <span style="color:#2b91af;">TestCtor</span> instance = <span style="color:blue;">null</span>;
    <span style="color:blue;">try</span>
    {
        instance = <span style="color:blue;">new</span> <span style="color:#2b91af;">TestCtor</span>();
    }
    <span style="color:blue;">catch</span> (<span style="color:#2b91af;">Exception</span>) { }
    <span style="color:#2b91af;">Console</span>.WriteLine(<span style="color:#a31515;">&quot;instance is null ? {0}&quot;</span>, instance == <span style="color:blue;">null</span>);

    <span style="color:#2b91af;">GC</span>.Collect();
    <span style="color:#2b91af;">Console</span>.ReadLine();
}</pre>
<p>Question : D’après vous quel est le comportement affiché ?</p>
<p>1°) “Instance is null = true” et fin du programme</p>
<p>2°) “Instance is null = true “et “Object is alive ! HashCode : ”</p>
<p>3°) “Instance is null = false” et “Object is alive ! HashCode&quot; : “</p>
<p>&#160;</p>
<p>tic, tac, tic, tac, tic, tac …</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>La bonne réponse est la numéro 2.</p>
<p>En effet lors du passage dans le constructeur, l’instance de la classe TestCtor est déjà créé et référencé par le runtime. L’exception déclenché lors de l’exécution du constructeur ne fait qu’empêcher que le pointeur sur l’instance ne soit transmis à la variable “instance”. Ce qui veux dire que nous avons, à ce moment, un objet qui n’est référencé à aucun endroit dans le programme. Le Garbage Collector peut donc nettoyer cet objet, c’est ce qui est mis en avant dans le destructeur.</p>
<p>&#160;</p>
<p>A noter qu’il n’est pas interdit ou déconseillé de déclencher des exceptions depuis un constructeur, il faut juste être au courant de ce comportement pour éviter par exemple de laisser trainer un objet à moitié instancié.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La CTP de Roslyn est disponible</title>
		<link>https://blog.developpez.com/phenixdotnet/p10418/net/la_ctp_de_roslyn_est_disponible</link>
		<comments>https://blog.developpez.com/phenixdotnet/p10418/net/la_ctp_de_roslyn_est_disponible#comments</comments>
		<pubDate>Wed, 19 Oct 2011 22:33:38 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;équipe en charge du projet Roslyn de publier la première CTP ainsi qu&#8217;un ensemble de documentation sur le site msdn du projet. Pour rappel le projet Roslyn est plus connu sous le nom de &#171;&#160;Compiler as a Service&#160;&#187; qui a pour but d&#8217;ouvrir les compilateurs VB.NET et C# afin de permettre leur enrichissement et leur intégration dans nos applications. Mais alors pourquoi donc ? &#8211; Pour faire plein d&#8217;outils d&#8217;analyse de code &#8211; Pour utiliser [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;équipe en charge du projet Roslyn de publier la première CTP ainsi qu&rsquo;un ensemble de documentation sur le <a href="http://msdn.microsoft.com/fr-fr/roslyn">site msdn du projet</a>. </p>
<p><span id="more-63"></span><br />
Pour rappel le projet Roslyn est plus connu sous le nom de &laquo;&nbsp;Compiler as a Service&nbsp;&raquo; qui a pour but d&rsquo;ouvrir les compilateurs VB.NET et C# afin de permettre leur enrichissement et leur intégration dans nos applications.</p>
<p>Mais alors pourquoi donc ?<br />
&#8211; Pour faire plein d&rsquo;outils d&rsquo;analyse de code<br />
&#8211; Pour utiliser le C# en tant que langage de script<br />
&#8211; Faire de l&rsquo;invocation dynamique de code dans nos applications<br />
&#8211; etc, etc, etc.</p>
<p>Bon code <img src="https://blog.developpez.com/phenixdotnet/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VS 2010 SP1 : Patch pour le détail d&#8217;un build TFS 2008</title>
		<link>https://blog.developpez.com/phenixdotnet/p9827/net/vs_2010_sp1_patch_pour_le_detail_d_un_bu_2008</link>
		<comments>https://blog.developpez.com/phenixdotnet/p9827/net/vs_2010_sp1_patch_pour_le_detail_d_un_bu_2008#comments</comments>
		<pubDate>Tue, 22 Mar 2011 10:54:46 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Général]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si comme moi vous utiliser VS 2010 SP1 et TFS 2008, vous avez sûrement du tomber sur un bug des plus énervant. En effet lors de l&#8217;ouverture d&#8217;une build TFS 2008, VS 2010 SP1 explose tout simplement &#8230; Le patch corrigeant ce problème a été mis à disposition sur Connect le 21/03/2011. Vous pouvez le télécharger à : cette adresse.]]></description>
				<content:encoded><![CDATA[<p>Si comme moi vous utiliser VS 2010 SP1 et TFS 2008, vous avez sûrement du tomber sur un bug des plus énervant.<br />
En effet lors de l&rsquo;ouverture d&rsquo;une build TFS 2008, VS 2010 SP1 explose tout simplement &#8230;<br />
Le patch corrigeant ce problème a été mis à disposition sur Connect le 21/03/2011.<br />
Vous pouvez le télécharger à : <a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34824">cette adresse</a>.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio Feature Pack 2 est disponible</title>
		<link>https://blog.developpez.com/phenixdotnet/p9493/net/visual_studio_feature_pack_2_est_disponi</link>
		<comments>https://blog.developpez.com/phenixdotnet/p9493/net/visual_studio_feature_pack_2_est_disponi#comments</comments>
		<pubDate>Tue, 16 Nov 2010 07:49:44 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Le Feature Pack 2 de Visual Studio 2010 est disponible au téléchargement pour les abonnés MSDN. Pour rappel le FP 1 apportait un ensemble d&#8217;outils dédiés à la modélisation. Dans le FP 2 ce sont les outils de testing qui sont à l&#8217;honneur. En effet ce FP 2 apporte le support de Firefox pour les tests d&#8217;interfaces graphiques (CodedUI tests), un nouvel éditeur pour ces tests et surtout le support de Silverlight 4 lors de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Le Feature Pack 2 de Visual Studio 2010 est disponible au téléchargement pour les abonnés MSDN.</p>
<p>Pour rappel le FP 1 apportait un ensemble d&rsquo;outils dédiés à la modélisation.<br />
Dans le FP 2 ce sont les outils de testing qui sont à l&rsquo;honneur.<br />
<span id="more-61"></span></p>
<p>En effet ce FP 2 apporte le support de Firefox pour les tests d&rsquo;interfaces graphiques (CodedUI tests), un nouvel éditeur pour ces tests et surtout le support de <strong>Silverlight 4</strong> lors de l&rsquo;enregistrement et du rejoue des tests.</p>
<p>Pour le téléchargement, c&rsquo;est par <a href="http://msdn.microsoft.com/en-us/vstudio/ff655021.aspx">ici</a>.</p>
<p>Pour en savoir plus sur les tests d&rsquo;interfaces graphiques, c&rsquo;est par <a href="http://msdn.microsoft.com/fr-fr/library/dd286726.aspx">ici</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WCF RIA services : Sortie de la beta du SP1</title>
		<link>https://blog.developpez.com/phenixdotnet/p9431/net/wcf_ria_services_sortie_de_la_beta_du_sp</link>
		<comments>https://blog.developpez.com/phenixdotnet/p9431/net/wcf_ria_services_sortie_de_la_beta_du_sp#comments</comments>
		<pubDate>Thu, 28 Oct 2010 17:27:55 +0000</pubDate>
		<dc:creator><![CDATA[dev01]]></dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Hier est sorti la beta du SP1 des WCF RIA Services. Ce SP1 apporte un certain nombre de nouveauté parmis lesquelles : &#8211; Support des types complexes d&#8217;entity framework &#8211; Le support de T4 pour la génération du code proxy client &#8211; Un meilleur support de EntitySet et de EntityCollection, utilisé par exemple par le DataForm et surtout, surtout le partage des entités par plusieurs domaine. Si vous avez déjà les RIA services d&#8217;installé, il [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Hier est sorti la beta du SP1 des WCF RIA Services.<br />
Ce SP1 apporte un certain nombre de nouveauté parmis lesquelles :<br />
&#8211; Support des types complexes d&rsquo;entity framework<br />
&#8211; Le support de T4 pour la génération du code proxy client<br />
&#8211; Un meilleur support de EntitySet et de EntityCollection, utilisé par exemple par le DataForm</p>
<p>et surtout, surtout le partage des entités par plusieurs domaine.</p>
<p>Si vous avez déjà les RIA services d&rsquo;installé, il vous faudra les déinstaller avant de pouvoir utiliser le SP1.</p>
<p>Pour le téléchargement c&rsquo;est par ici :<br />
&#8211; <a href="http://go.microsoft.com/fwlink/?LinkId=205085">RIA Services</a><br />
&#8211; <a href="http://go.microsoft.com/fwlink/?LinkID=205088">RIA Services toolkit</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
