public abstract class Component
    {
        public abstract void sampleOperation();
    }
    /*
     * 具体的一个门
     */
    public class Door : Component
    {
        public override void sampleOperation()
        {
            Console.WriteLine("Build a door!");
        }
    } 
    /*
     * 一个装饰抽象类,下面派生出一个用来装饰门的锁子和一个把手
     */
    public abstract class Decorator : Component
    {
        private Component component;        public Decorator(Component _component)
        {
            this.component = _component;
        }        public override void sampleOperation()
        {
            this.component.sampleOperation();
        }
    }  
    /*
     * 用来装饰门的把手
     */
    public class Knob : Decorator
    {
        public Knob(Component component)
            : base(component)
        {        }
        public override void sampleOperation()
        {
            base.sampleOperation();
            Console.WriteLine("Add an Knob(把手)");
        } 
    } 
    public class DecoratorPattern
    {
         Component door123 = new Door();//创建一个扇门(向下转型)
         Decorator knob = new Knob(door123);//报错:字段初始值设定项无法引用非静态字段、方法或属性“tlogin.comm”
         public void f1()
         {
             knob.sampleOperation();
         } 
    }
    public class test
    { 
        public static void Main()
        {
            DecoratorPattern k = new DecoratorPattern();
            k.f1();
        } 
    }