Appeler la fonction non statique à partir de la fonction statique

Je ne peux pas appeler une fonction non statique à partir d'une fonction statique (ou) je veux appeler une fonction javascript à partir d'une fonction statique.

[WebMethod] public static void add_items(string itemslist) { get_price(itemslist); // Error An object reference is required for non-static //(or) ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "<Script language='javascript' " + "type='text/javascript'>message();</script>", false); //Error in this, this } protected void get_price(string item_id) { } 

Étant donné que les méthodes statiques sont accessibles indépendamment du fait que vous ayez ou non créé cette classe, accéder à un membre de classe à partir d'une méthode statique pourrait potentiellement signifier que vous faites référence à quelque chose qui n'existe pas encore dans la pile ou le tas, créant ainsi une exception au moment de l'exécution .

Pour cette raison, vous ne pouvez pas faire référence à des membres non statiques dans des méthodes statiques sans instancier le membre non statique d'abord, et c'est pourquoi vous obtenez une erreur. J'espère que cela t'aides!

Bien sûr, vous ne pouvez pas. Si vous voulez le faire, vous devez d'instancier l'objet contenant la méthode non statique d'abord.

L'option droite est créer un objet de classe et une méthode d'appel. Si vous ne mettez pas à jour l'état de l'objet (me semble dans ce cas), convertir la signature de méthode get_price en static

Malheureusement, vous ne pouvez pas appeler la méthode d'instance dans une méthode statique. La suite est-elle possible dans votre situation?

  [WebMethod] public static void add_items(string itemslist, Action<string> instanceMethod) { //get_price(itemslist);// Error An object reference is required for non-static instanceMethod(itemlist); } protected void get_price(string item_id) { } 

Ensuite, passez get_price comme argument comme ça.

 add_items(anItemslist, get_price);