SORU
19 Aralık 2008, Cuma


C parametre olarak bir işlev geçirmek nasıl giderilir?

C parametre olarak bir işlev geçmek mümkündür#? Bu İşlev veya Eylem sınıfları kullanarak yapabilirim ama bu benim tüm işlev imzası derhal ilan etmeye zorlar. Temsilci kullanmaya çalıştığımda, hata bir Temsilci yöntemi bir grup dönüştürebilirsiniz! " diyerek derlemek istiyorum.

Axial üzerinde çalışıyorum ve kullanıcıların web hizmetleri aramak için izin vermek için çalışıyorum. Yapmaya çalıştığım Visual Studio proxy sınıf oluşturmak ve oluşturulan fonksiyon geçmek için yeteneğidir. İşlev imzası oluşturulan kod sadece fonksiyon adını kullandığı için bir önemi yok. Ancak, isterim geçişte işlevi yerine adı için iki sebep: bu yeteneği kullanmak için proxy Url özelliğini ve bir derleyici hata varsa web hizmeti yok veya profesyonel olarak Visual Studio.


public void AlertIt(object o) {
    Axial.DOM.Window.Alert(o.ToString());
}
public void CallAddService() {
    object[] param = new object[] { int.Parse(txtA.Text), int.Parse(txtB.Text) };
    Axial.ServerScript.CallWebService(new WSProxy.WS().Add, param, AlertIt, AlertIt);
}

class Axial.ServerScript {
    public void CallWebService(Delegate method, object[] param, Action<object> successCallback, Action<object> failureCallback) {
        // translate to javascript (already working)
    }
}

CEVAP
19 Aralık 2008, Cuma


Ne istediğinizi sanıyorum

static object InvokeMethod(Delegate method, params object[] args){
    return method.DynamicInvoke(args);
}

static int Add(int a, int b){
    return a   b;
}

static void Test(){
    Console.WriteLine(InvokeMethod(new Func<int, int, int>(Add), 5, 4));
}

"". 9 yazdırır

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dive In

    Dive In

    17 Temmuz 2013
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • MaximumPCMag

    MaximumPCMag

    23 Temmuz 2010