2009-06-09 6 views
1
namespace MyApp.MyNamespace 
{ 
    public class MyClass:System.Web.UI.Page 
    { 
     private DataUtility Util = new DataUtility(); 
     private CookieData cd = MyClass.Toolbox.GetCurrentCookieData(HttpContext.Current); 
     //below I get the error: "System.Web.UI.Util is unavailable due to its protection level" 
     private int CompanyID = Util.GetCompanyIDByUser(cd.Users); 

    protected override void OnLoad(EventArgs e) 
    { 
     //I'd like to use CompanyID here 
    }   

    protected void MyEventHandler(object sender, EventArgs e) 
    { 
     //as well as here 
    } 
} 

Et voici DataUtility:Erreur d'accessibilité sur l'objet public

public class DataUtility 
{ 
    public DataUtility() {} 
    //snip 
    public int GetCompanyIDByUser(int UserID) 
    { 
     //snip 
    } 
} 

Je l'ai regardé et DataUility ainsi que la méthode à l'intérieur de celui-ci sont déclarées publiques, donc je ne sais pas pourquoi je Je reçois cette erreur.

Répondre

0

J'ai simplement ajouté un mot-clé statique à l'initialiseur DataUtility, et tout a fonctionné comme un charme. Merci tout le monde. :)

0

Un initialiseur de champ ne peut pas référencer les membres non statiques de ses propres membres de classe. Si vous déplacez Util = new DataUtility(), cd = ... et C ompanyID = ... dans un constructeur par défaut, je crois que votre code pourrait fonctionner.

+0

J'ai ajouté tout cela entre MyClass() {// ici}, mais j'ai rencontré la même erreur. –

1

Vous ne pouvez pas référencer un champ d'instance de votre classe dans un initialiseur de champ.

Déplacez cd = Util.GetCompanyIDByUser(cd.Users); vers le constructeur de classe et cela fonctionnera.

La raison pour laquelle vous obtenez un message d'erreur apparemment incorrect est que votre champ Util est en conflit avec un type interne dans le framework .Net. Si vous renommez Util en util (minuscule u), vous obtiendrez un message d'erreur plus correct (mais cela ne résoudra pas le problème à moins que vous ne déplaciez l'appel de méthode au constructeur MyClass, comme ci-dessus).

Questions connexes