2 Stimmen

C# Klasse nicht öffentlich

Ich versuche, eine Klasse zu erstellen, damit, wenn ich Folgendes innerhalb einer Datei mache:

Functions LoginFunctions = new Functions(); 
LoginFunctions.loadFunctions(); 

Es wird mein Objekt erstellen, das ich brauche, und es öffentlich machen, damit jedes Formular, das die Klasse aufruft, es verwenden kann. Die Klassendatei befindet sich unten.

namespace App
{
    public class Functions
    {
        public void loadFunctions()
        {
            TaskbarItemInfo taskbarItemInfo = new TaskbarItemInfo();
        }
    }
}

Es scheint nicht, dass das taskbarItemInfo-Objekt öffentlich gemacht wird und es lässt mich nicht zu, es irgendwo anders als innerhalb der Klasse zu verwenden. Wie mache ich es öffentlich, damit jede Datei, die die Klasse aufruft, das Objekt verwenden kann?

5voto

Grant Crofton Punkte 8022

Wie die anderen bereits erwähnt haben, machen Sie es zu einer Eigenschaft, zum Beispiel so:

public class Functions
{
    public TaskbarItemInfo TaskbarItemInfo { get; private set; }

    public void loadFunctions()
    {
        this.TaskbarItemInfo = new TaskbarItemInfo();
    }
}

4voto

skyfoot Punkte 20503

Ihre Taskbaritem-Klasse befindet sich im Geltungsbereich der Methode und daher können Sie nicht außerhalb der Klasse darauf zugreifen.

Erstellen Sie eine öffentliche Eigenschaft oder geben Sie sie in der Methode zurück.

    namespace App
    {
        public class Functions
        {
            private TaskbarItemInfo _taskbarItemInfo;

            public TaskbarItemInfo taskbarItemInfo
           {
               get
              {
                   return _taskbarItemInfo;
              }
           }

            public void loadFunctions()
            {
                _taskbarItemInfo = new TaskbarItemInfo();

            }
        }
    }

Ich würde auch die loadFunctions-Methode in einen Konstruktor ändern, der alle Objekte erstellt, die Sie benötigen.

public Functions()
{
    _taskbarItemInfo = new TaskbarItemInfo();
}

2voto

Andrew Flanagan Punkte 4247

In dem von Ihnen bereitgestellten Beispiel wird taskbarItemInfo im lokalen Gültigkeitsbereich der Methode loadFunctions() deklariert. Wenn Sie möchten, dass es öffentlich für eine Klasse ist, müssen Sie es zuerst zu einem Klassenmember machen, bevor Sie es öffentlich machen können.

2voto

CaffGeek Punkte 21343

Sie müssen die Variable öffentlich machen.

namespace App
{
    public class Functions
    {
        public TaskbarItemInfo TaskbarItemInfo { get; private set; }

        public void loadFunctions()
        {
            TaskbarItemInfo = new TaskbarItemInfo();
        }
    }
}

BEARBEITEN: Sie könnten auch die Initialisierung der Elemente im Konstruktor durchführen.

namespace App
{
    public class Functions
    {
        public TaskbarItemInfo TaskbarItemInfo { get; private set; }

        public Functions() 
        {
            loadFunctions();
        }

        private void loadFunctions()
        {
            TaskbarItemInfo = new TaskbarItemInfo();
        }
    }
}

Dann benötigen Sie die Zeile LoginFunctions.loadFunctions(); nicht mehr, nachdem Sie Ihr LoginFunctions-Objekt initialisiert haben.

1voto

Kimball Robinson Punkte 3189

Sie möchten wahrscheinlich darauf als Eigenschaft zugreifen, die ein privates statisches Element erzeugt, wenn es benötigt wird.

namespace App
{
    public class Functions
    {
        private static TaskbarItemInfo _taskbarItemInfo;

        public static TaskbarItemInfo TaskBarItemInfoProperty
        {
            get{
               if (_taskbarItemInfo == null) 
               {
                  _taskbarItemInfo = new TaskbarItemInfo();
               }
               return _taskbarItemInfo;
            }
        }
    }

    public class Test
    {
        public void testFunction()
        {
           Functions.TaskBarItemInfoProperty.doSomething();
        }
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X