2016-03-22 13 views
0

Bunu yapmaya çalıştım:Bir uzantı yönteminin ilk parametresi olarak bir yöntem kullanmak mümkün mü?

public static EventHandler ToEventHandler(this Action callback) 
{...} 

bazı sözdizimsel şeker için ben bir EventHandler için yazılan oluyor bir yönteme void x() gibi basit bir yöntem olarak geçirmek istediğinizde. Ben şöyle diyorum çalıştığınızda

Ama:

yöntemleri .NET birinci sınıf vatandaş olduğu için
x() is a 'method', which is not valid in the given context 

, ben neden göremiyorum:

SomeMethod(x.ToEventHandler()); 

Bir derleyici hatası alıyorum Bu mümkün olmamalı. Neden böyle değil ve yapmaya çalıştığım şeyi başarmanın başka bir yolu var mı?

+0

bu bağlantıyı kontrol edin http://stackoverflow.com/questions/2082615/pass-method-as-parameter-using-c-sharp – rashfmnb

+0

Önce bir 'Action' yapmasını denediniz mi? Derleyici başka türlü bilene kadar bir yöntem grubudur. –

cevap

0

Bunu yapamazsınız, çünkü x bir yöntemdir ve derleyici, uzantı yöntemlerini kullanarak bir yöntemi temsilci tarafından bir temsilci haline dönüştürmez (Bence gerçekten bunu yapabilmeliyim ...). Eğer (... parametresiz temsilci) bir Action kullanmamasını bekler iken bir EventHandler iki giriş parametresi vardır, diğer taraftan ise SomeMethod(new Action(x).ToEventHandler());

:

Tek ihtiyacın budur. Şunu denediğime şüphe ediyorsunuz:

... ve sonra, bu rotaya gidiyorsanız, sorun değil.

İlgili konular