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

  • Art Food Kitty - Kelly Eddington

    Art Food Kit

    7 Kasım 2006
  • Strata1000

    Strata1000

    28 EYLÜL 2009
  • TVNorge

    TVNorge

    5 EKİM 2006