<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Commentaires sur : Quand les closures nous facilitent la vie</title>
	<atom:link href="http://codingly.com/2008/06/03/quand-les-closures-nous-facilitent-la-vie/feed/" rel="self" type="application/rss+xml" />
	<link>http://codingly.com/2008/06/03/quand-les-closures-nous-facilitent-la-vie/</link>
	<description>Par Romain Verdier</description>
	<lastBuildDate>Tue, 09 Mar 2010 20:07:07 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Par : Romain Verdier</title>
		<link>http://codingly.com/2008/06/03/quand-les-closures-nous-facilitent-la-vie/#comment-65</link>
		<dc:creator>Romain Verdier</dc:creator>
		<pubDate>Fri, 13 Jun 2008 06:41:52 +0000</pubDate>
		<guid isPermaLink="false">http://romainverdier.wordpress.com/?p=62#comment-65</guid>
		<description>Le truc à noter ici c&#039;est surtout qu&#039;en utilisant une méthode anonyme (on aurait pu aussi utiliser une expression lambda) il devient possible de faire appel à une méthode de &lt;code&gt;this.pool&lt;/code&gt;, qui aurait été plus difficilement accessible si on s&#039;était abonné différemment à l&#039;évènement &lt;code&gt;Stopped&lt;/code&gt;

Dans Rhino Mocks, pour définir une expectation sur une méthode qui ne retourne rien, tu peux faire plus simple :

[code language=&quot;csharp&quot;]
// Appel direct de la méthode
myObject.MyMethod();
// Définition des contraintes éventuelles en utilisant la classe statique LastCall
LastCall.Repeat.Twice();
[/code]</description>
		<content:encoded><![CDATA[<p>Le truc à noter ici c&#8217;est surtout qu&#8217;en utilisant une méthode anonyme (on aurait pu aussi utiliser une expression lambda) il devient possible de faire appel à une méthode de <code>this.pool</code>, qui aurait été plus difficilement accessible si on s&#8217;était abonné différemment à l&#8217;évènement <code>Stopped</code></p>
<p>Dans Rhino Mocks, pour définir une expectation sur une méthode qui ne retourne rien, tu peux faire plus simple :</p>
<pre class="brush: csharp;">
// Appel direct de la méthode
myObject.MyMethod();
// Définition des contraintes éventuelles en utilisant la classe statique LastCall
LastCall.Repeat.Twice();
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>Par : grozeille</title>
		<link>http://codingly.com/2008/06/03/quand-les-closures-nous-facilitent-la-vie/#comment-64</link>
		<dc:creator>grozeille</dc:creator>
		<pubDate>Fri, 13 Jun 2008 04:56:35 +0000</pubDate>
		<guid isPermaLink="false">http://romainverdier.wordpress.com/?p=62#comment-64</guid>
		<description>??
le &quot;truc&quot; c&#039;était ça ?:
Stopped += delegate { this.pool.ReleaseView(view); };  

J&#039;ai rencontré le coup du &quot;delegate {}&quot; avec RhinoMock. En effet, quand on &quot;s&#039;attend à un appelle de la méthode MaClass.MaMethode()&quot; ça s&#039;écrit:
Expect.Call(MaClasse.MaMethode());

Mais si &quot;MaMethode()&quot; retourne un void? La méthode &quot;Call&quot; ne peut pas prendre un &quot;void&quot; et le code ne compile pas. L&#039;astuce est donc de passer par ce &quot;delegate&quot;:
Expect.Call(delegate{ MaClasse.MaMethode(); });</description>
		<content:encoded><![CDATA[<p>??<br />
le &laquo;&nbsp;truc&nbsp;&raquo; c&#8217;était ça ?:<br />
Stopped += delegate { this.pool.ReleaseView(view); };  </p>
<p>J&#8217;ai rencontré le coup du &laquo;&nbsp;delegate {}&nbsp;&raquo; avec RhinoMock. En effet, quand on &laquo;&nbsp;s&#8217;attend à un appelle de la méthode MaClass.MaMethode()&nbsp;&raquo; ça s&#8217;écrit:<br />
Expect.Call(MaClasse.MaMethode());</p>
<p>Mais si &laquo;&nbsp;MaMethode()&nbsp;&raquo; retourne un void? La méthode &laquo;&nbsp;Call&nbsp;&raquo; ne peut pas prendre un &laquo;&nbsp;void&nbsp;&raquo; et le code ne compile pas. L&#8217;astuce est donc de passer par ce &laquo;&nbsp;delegate&nbsp;&raquo;:<br />
Expect.Call(delegate{ MaClasse.MaMethode(); });</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Romain Verdier</title>
		<link>http://codingly.com/2008/06/03/quand-les-closures-nous-facilitent-la-vie/#comment-63</link>
		<dc:creator>Romain Verdier</dc:creator>
		<pubDate>Thu, 12 Jun 2008 14:23:18 +0000</pubDate>
		<guid isPermaLink="false">http://romainverdier.wordpress.com/?p=62#comment-63</guid>
		<description>Comme vous insistez lourdement pour connaitre la réponse, je cède :

[code language=&quot;csharp&quot;]
public class SomewhereInMyApplication
{
    // ...

    private readonly ViewPool pool = new ViewPool(10);

    public void OnNewMessageAReceived(Message message)
    {
        IView view = this.pool.GetView();
        Presenter presenter = new Presenter(view);
        view.Presenter = presenter;
        presenter.Stopped += delegate { this.pool.ReleaseView(view); };
        presenter.Start();
    }
}
[/code]</description>
		<content:encoded><![CDATA[<p>Comme vous insistez lourdement pour connaitre la réponse, je cède :</p>
<pre class="brush: csharp;">
public class SomewhereInMyApplication
{
    // ...

    private readonly ViewPool pool = new ViewPool(10);

    public void OnNewMessageAReceived(Message message)
    {
        IView view = this.pool.GetView();
        Presenter presenter = new Presenter(view);
        view.Presenter = presenter;
        presenter.Stopped += delegate { this.pool.ReleaseView(view); };
        presenter.Start();
    }
}
</pre>
]]></content:encoded>
	</item>
</channel>
</rss>
