Forum Clubic

[.NET] probleme de POO

Pourquoi je ne peux pas appeler l’objet Session dans un methode static d’une class public dérivé de System.Web.UI.Page ?

using System;
using System.Resources;
using System.Threading;
using System.Globalization;

namespace PPSAVWebApp
{

	public class Traduction : System.Web.UI.Page
	{
  public Traduction()
  {

  }

  public static string GetTraduction(string label)
  {


  	ResourceManager rm;

  	Thread.CurrentThread.CurrentUICulture = new CultureInfo(Session["language"].ToString());
  	rm = (ResourceManager)new System.Resources.ResourceManager(typeof(PPSAVWebApp.traduction));

  	
  	string Trans="XXX";
  	try
  	{
    Trans=rm.GetString(label);
  	}
  	catch{}
  	if(Trans==null) Trans="XXX";
  	return Trans;
  
  }
	}
}

J’obtiens ça :
C:\Inetpub\wwwroot\PPSAVWebApp\Traduction.cs(22): An object reference is required for the nonstatic field, method, or property ‘System.Web.UI.Page.Session’

Je pige pas trop là, si qqn a une idée je veux bien un coup de main :paf:

je n’y connais strictement rien en .net mais la logique me dit que le probème est ici :

Il te demande un objet pour la méthode session qui à surement besoin d’un argument implicite :neutre: , peut-être lui passer this comme en c++ [:paysan].

du genre (*this).Session …

Moi je dirais plutôt que c’est une question de programmation objet (d’ailleurs précise C# dans ton titre?).

Tu ne peux pas accéder à un attribut d’instance (la session) à partir d’un méthode de classe( static). parcque les méthodes de classe n’ont pas connaissance de l’instance par définition. il faut soit que tu accède à uninstance.session, si tu as une instance sous kla main, soit que tu transforme ta méthode static en méthode d’instance, et donc que tu appelle ta méthode à partir aussi d’une sintance.

Je sais pas en C#, mais en java, on préfère limiter l’usage des méthodes static au stric minimum, quand on est obligé, c’est moins souple, (et pas forcément correct).

edit: en quand je lis ton exemple, en static çe ne serait forcément pas correct, ça voudrait dire que tout le monde reçoit la même traduction, donc soit tout anglais, soit tout français… :confused:

Tu peux pas appeler que des variables static dans une methode static?

(Je dis ça sans savoir, c’est peut être une grosse betise :ane:)

c’est ce que je disais, mais j’ai du mal m’exprimer.
c’est du moins ce que je pensais.

c’est exactement ce à quoi je pensais :smiley: