JB, I just looked it up in our code. In order to do this we are resolving the type definition. I believe we ran into scenarios where this needs to be done.
Cheers, Greg On Mon, Jun 2, 2014 at 9:39 AM, Jb Evain <[email protected]> wrote: > Ah right, my bad. In the wild you'll see it mainly (only?) with > interfaces though, I don't know of any compiler that will use it > elsewhere. > > That being said if you want to explicitly check that, you'll have to > resolve the type defining the method reference. > > Jb > > On Sun, Jun 1, 2014 at 11:54 PM, Ulrich <[email protected]> wrote: > > Hi Jb, > > > > Given a C# override method, like in the following code, the C# compiler > does > > not emit a ".override" (MethodImpl) entry for Derived.M (in contrast to > > explicit interface implementations). > > > > public abstract class Base > > { > > public virtual void M() > > { > > Console.WriteLine("Base"); > > } > > } > > > > public class Derived : Base > > { > > public override void M() > > { > > base.M(); > > Console.WriteLine("Derived"); > > } > > } > > > > I ildasm'ed that code, added ".override Namespace.Base::M" in Derived.M > and > > ilasm'ed the assembly again. The C# compiler accepts this modified > assembly > > as a reference and Derived.M behaves the same way as the unmodified > version. > > So we see, that a compiler could emit ".override" for other methods than > > explicit interface implementations. Also ECMA-335 (2012) II.10.3.2 says > > "this directive [.override] can be used to provide an implementation for > a > > virtual method inherited from a base class, or a virtual method > specified in > > an interface implemented by this type". > > > > > > KR, Ulrich > > > > > > > > Am Freitag, 30. Mai 2014 15:50:23 UTC+2 schrieb Jb Evain: > >> > >> By definition, .override methods are interface methods. > >> > >> On Fri, May 30, 2014 at 9:51 AM, Ulrich <[email protected]> wrote: > >> > Hi Jb, > >> > > >> > OK. And how, can I determine if the method in the Overrides collection > >> > is an > >> > interface method without resolving the declaring type reference? > >> > > >> > KR, Ulrich > >> > > >> > > >> > Am Freitag, 30. Mai 2014 09:34:55 UTC+2 schrieb Jb Evain: > >> >> > >> >> Hi Ulrich, > >> >> > >> >> This one is actually easy :) > >> >> > >> >> You'll see all the interface methods the method explicitly implements > >> >> in the .Overrides collection of the method. > >> >> > >> >> Jb > >> >> > >> >> On Fri, May 30, 2014 at 9:22 AM, Ulrich <[email protected]> wrote: > >> >> > ... without resolving a type reference. > >> >> > > >> >> > bool IsExplicitInterfaceImplementation(MethodDefinition method) > >> >> > { > >> >> > //return method.IsPrivate && method.IsFinal && > method.IsVirtual; > >> >> > //return method.HasOverrides; > >> >> > //return method.Name.Contains("."); > >> >> > } > >> >> > > >> >> > All these variants are heuristics and work for the current C# > >> >> > compiler, > >> >> > but > >> >> > may not work for other ones. > >> >> > Which is the best one? Should I use a combination of heuristics? > Any > >> >> > alternative ideas? > >> >> > > >> >> > -- > >> >> > -- > >> >> > -- > >> >> > mono-cecil > >> >> > --- > >> >> > You received this message because you are subscribed to the Google > >> >> > Groups > >> >> > "mono-cecil" group. > >> >> > To unsubscribe from this group and stop receiving emails from it, > >> >> > send > >> >> > an > >> >> > email to [email protected]. > >> >> > For more options, visit https://groups.google.com/d/optout. > >> > > >> > -- > >> > -- > >> > -- > >> > mono-cecil > >> > --- > >> > You received this message because you are subscribed to the Google > >> > Groups > >> > "mono-cecil" group. > >> > To unsubscribe from this group and stop receiving emails from it, send > >> > an > >> > email to [email protected]. > >> > For more options, visit https://groups.google.com/d/optout. > > > > -- > > -- > > -- > > mono-cecil > > --- > > You received this message because you are subscribed to the Google Groups > > "mono-cecil" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > For more options, visit https://groups.google.com/d/optout. > > -- > -- > -- > mono-cecil > --- > You received this message because you are subscribed to the Google Groups > "mono-cecil" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Studying for the Turing test -- -- -- mono-cecil --- You received this message because you are subscribed to the Google Groups "mono-cecil" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
