<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CIL on MemoryLeak</title><link>https://blog.memoryleak.ovh/tags/cil/</link><description>Recent content in CIL on MemoryLeak</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Thu, 22 Apr 2010 22:22:00 +0000</lastBuildDate><atom:link href="https://blog.memoryleak.ovh/tags/cil/index.xml" rel="self" type="application/rss+xml"/><item><title>Overriding et Shadowing de méthodes en IL.</title><link>https://blog.memoryleak.ovh/posts/overriding-et-shadowing-de-methodes-en-il/</link><pubDate>Thu, 22 Apr 2010 22:22:00 +0000</pubDate><guid>https://blog.memoryleak.ovh/posts/overriding-et-shadowing-de-methodes-en-il/</guid><description>&lt;p&gt;En ce moment je fais joujou avec les opcodes CIL qui se cachent sous notre bon vieux C#.&lt;/p&gt;
&lt;p&gt;En voulant surcharger et cacher (shadow) successivement deux propriétés hérités, j&amp;rsquo;ai remarqué que le compilo générait une suite de metadata assez déroutante. Prenons l&amp;rsquo;exemple suivant :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;public class BaseClass
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public int Prop1 { get; set; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public virtual int Prop2 { get; set; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public virtual int Prop3 { get; set; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public class DerivClass : BaseClass
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public int Prop1 { get; set; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public new int Prop2 { get; set; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public new virtual int Prop3 { get; set; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Du coté de la classe de base on obtient les metadata suivantes sur le getter :&lt;/p&gt;</description></item></channel></rss>