thank you Guido for your attention, but I did not mean logical difference.
It was my fault not to clarify it more :D, Consider this:
We have a "MethodDefinition" and we are going to find out whether it is an
Interface method implementation or Virtual method!
As I found out, in both cases we are dealing with methods which are

   1. HidBySig
   2. Virtual
   3. NewSlot

thanks,
KC

On Mon, Jul 13, 2009 at 4:23 PM, Guido Ziliotti <[email protected]>wrote:

> To start with maybe you would like to run the following examples which
> highlights some basic differences.
> It might look a bit odd if you are not used to these tricks. But it's
> simple anyway
>
> -----------START OF EXAMPLE ------------------
> using System;
>
> namespace InVirtual
> {
>     class Program
>     {
>         static void Main(string[] args){
>
>             var x = new MyClass();
>             var y = new MyDerivedClass();
>             var z = new MyOtherDerivedClass();
>
>             x.InterafaceMethod();
>             y.InterafaceMethod();
>             z.InterafaceMethod();
>
>             Console.WriteLine("-- classes array --");
>             var array = new MyClass[] { x, y,z };
>             foreach (var a in array) {
>                 a.InterafaceMethod();
>             }
>             Console.WriteLine("-- interfaces array --");
>             var interfaces = new ISomething[] { x, y ,z};
>             foreach (var i in interfaces){
>                 i.InterafaceMethod();
>             }
>         }
>     }
>
> public interface ISomething{
>     void InterafaceMethod();
> }
>
> public class MyClass : ISomething{
>
>     public virtual void VirtualMethod(){
>         Console.WriteLine("MyClass.VirtualMethod");
>     }
>
>     #region ISomething Members
>
>     public void InterafaceMethod(){
>         Console.WriteLine("MyClass: ISomething");
>     }
>
>     #endregion
> }
>
> public class MyDerivedClass : MyClass{
>     public void InterafaceMethod(){
>         Console.WriteLine("MyDerivedClass: ISomething");
>     }
> }
>
> public class MyOtherDerivedClass : MyClass, ISomething{
>     public void InterafaceMethod(){
>         Console.WriteLine("MyOtherDerivedClass: ISomething");
>     }
> }
> }
>
> -----------END OF EXAMPLE ------------------
>
>
> On Mon, Jul 13, 2009 at 2:25 PM, Knight Commander <[email protected]
> > wrote:
>
>> Hi Cecilers :)
>> Is there any way to differ between a C# virtual method (not IL virtual)
>> and interface implementation method?
>> To clarify what I mean, in the example below, what is the difference
>> between "InterfaceMethod" and "VirtualMethod" in "MyClass" class?
>>
>> Here is the example:
>>
>> -----------START OF EXAMPLE ------------------
>>
>> public interface ISomething{
>> void InterafaceMethod();
>> }
>>
>> public class MyClass:ISomething{
>>
>> public void InterfaceMethod()
>> {
>> }
>>
>> public virtual void VirtualMethod()
>> {
>> }
>> }
>>
>> -----------END OF EXAMPLE ------------------
>>
>> thank you all
>>
>>
>> CECIL is GREAT!
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
--
mono-cecil
-~----------~----~----~----~------~----~------~--~---

Reply via email to