Code
Mixin can be implemented in C# 3.0 using an extension method. 
Functionality can be added by extending 
the interface implemented by the class.
 
Consider the following example.
Code
   1:  using System;
Code
   2:
Code
   3:  namespace Mixin
Code
   4:
Code
   5:  {
Code
   6:
Code
   7:  class Person : IPerson
Code
   8:
Code
   9:  {
Code
  10:
Code
  11:  private int _age;
Code
  12:
Code
  13:  private string _name;
Code
  14:
Code
  15:  #region IPerson Members
Code
  16:
Code
  17:  public int age
Code
  18:
Code
  19:  {
Code
  20:
a
Code
  21:  get
Code
  22:
Code
  23:  {
Code
  24:
Code
  25:  return _age;
Code
  26:
Code
  27:  }
Code
  28:
Code
  29:  set
Code
  30:
Code
  31:  {
Code
  32:
Code
  33:  if (value > 0)
Code
  34:
Code
  35:  {
Code
  36:
Code
  37:  _age = value;
Code
  38:
Code
  39:  }
Code
  40:
Code
  41:
Code
  42:  }
Code
  43:
Code
  44:  }
Code
  45:
Code
  46:
Code
  47:  public string name
Code
  48:
Code
  49:  {
Code
  50:
Code
  51:  get
Code
  52:
Code
  53:  {
Code
  54:
Code
  55:  return _name;
Code
  56:
Code
  57:  }
Code
  58:
Code
  59:  set
Code
  60:
Code
  61:  {
Code
  62:
Code
  63:  if (!string.IsNullOrEmpty(value))
Code
  64:
Code
  65:  {
Code
  66:
Code
  67:  _name = value;
Code
  68:
Code
  69:  }
Code
  70:
Code
  71:  else
Code
  72:
Code
  73:  {
Code
  74:
Code
  75:  _name = "Unknown";
Code
  76:
Code
  77:  }
Code
  78:
Code
  79:  }
Code
  80:
Code
  81:  }
Code
  82:
Code
  83:  #endregion
Code
  84:
Code
  85:  }
Code
  86:
Code
  87:  interface IPerson
Code
  88:
Code
  89:  {
Code
  90:
Code
  91:  int age { get; set; }
Code
  92:
Code
  93:  String name { get; set; }
Code
  94:
Code
  95:  }
Code
  96:
Code
  97:  static class ExtendIPerson
Code
  98:
Code
  99:  {
Code
 100:
Code
 101:  public static bool CanDrive(this IPerson testPerson, bool isDriver)
Code
 102:
Code
 103:  {
Code
 104:
Code
 105:  if (isDriver)
Code
 106:
Code
 107:  return true;
Code
 108:
Code
 109:  return false;
Code
 110:
Code
 111:  }
Code
 112:
Code
 113:  }
Code
 114:
Code
 115:  class Program
Code
 116:
Code
 117:  {
Code
 118:
Code
 119:  static void Main(string[] args)
Code
 120:
Code
 121:  {
Code
 122:
Code
 123:  IPerson ip = new Person();
Code
 124:
Code
 125:
Code
 126:  ip.name = "ABC";
Code
 127:
Code
 128:  ip.age = 21;
Code
 129:
Code
 130:  if(ip.CanDrive(true))
Code
 131:
Code
 132:  {
Code
 133:
Code
 134:  Console.WriteLine(ip.name +" can drive");
Code
 135:
Code
 136:  }
Code
 137:
Code
 138:  Console.ReadLine();
Code
 139:
Code
 140:  }
Code
 141:
Code
 142:  }
Code
 143:
Code
 144:  }
Code
 145:
Code
Code
In this example, we implemented mixin by extending the IPerson interface
Code
[line 87] using CanDrive extension method defined
Code
in the ExtendIPerson static class[line 101].
Code
Notice the code on line 130 ip.CanDrive - an example of C# mixin.
Code
Another explanation of the mixin can be found at
Code
Code
http://mikehadlow.blogspot.com/2008/05/interface-extension-methods-mixin.html