public static void Main()
MyI inter = new MyObject(){ Integer = 2 };
MyObject obj = new MyObject(){ Integer = 2 };
public static class extensions{
public static void Sum(this MyI self)
self.Long = self.Integer * 2;
Console.WriteLine("summing interface");
(self as MyObject).Sum();
public static void Sum(this MyObject self)
self.NotFromInterface = self.Integer + 1;
Console.WriteLine("summing myobject");
public int Integer {get;set;}
public long Long {get;set;}
public class MyObject: MyI{
public int Integer {get;set;}
public long Long {get;set;}
public long NotFromInterface {get;set;}