2008-10-07 8 views
2

У меня есть абстрактный класс, и я бы хотел использовать его быстро, НЕ создавая конкретный класс, наследующий абстрактный класс. Ну, чтобы определить абстрактный метод анонимно.C# Аннотация класс, используя анонимный вместо объявления конкретного класса?

Нечто подобное:

  Command c = new Command(myObject){ 
       public override void Do() 
       { 
       }     
      }; 

Можно ли в C# .net 2.0?

ответ

1

Вы можете создать тип, который оборачивает действие, обеспечивающее реализацию как таковые:

class ActionCommand 
{ 
    private readonly Action _action; 

    public ActionCommand(Action action) 
    { 
     _action = action; 
    } 

    public override void Do() 
    { 
     _action(); 
    }     
}; 

Это может быть использовано в качестве так:

Command c = new Command((Action)delegate() 
      { 
       // insert code here 
      });