Можно ли получить доступ к классу свойств из других классов, не используя экземпляр - PullRequest
2 голосов
/ 19 февраля 2012

В приложении WinForms, над которым я работаю, я хотел бы иметь класс свойств для хранения общих переменных, к которым могут обращаться все формы в проекте, чтобы хранить и извлекать значения по мере необходимости.

В прошлом я использовал статический класс для хранения строк, значений int и т. Д., Но они исправлены во время кодирования и не могут быть изменены во время работы приложения. Я хотел бы использовать класс свойств таким же образом, если это возможно, чтобы я мог читать функции и записи.

Должен ли я создать экземпляр класса свойств в Form1.cs, а затем передать его в качестве параметра в конструкторе других форм, чтобы они могли получить доступ к полям в классе свойств?

Или это можно сделать без инстанцирования?

Ответы [ 3 ]

4 голосов
/ 19 февраля 2012

Если я вас правильно понял - вам не нужно ничего делать по-другому. Вы можете изменить их во время работы.

Вы можете иметь:

static class ForAll
{
    public static int i;
}

И используйте это:

ForAll.i = 1;
1 голос
/ 19 февраля 2012

Простой ответ, Да, вы должны отправить мгновение класса.
Нельзя использовать нестатические свойства или методы без мгновенного указания класса.

В любом случае appconfig звучит как лучшее место для данных.

0 голосов
/ 19 февраля 2012

Я бы порекомендовал использовать шаблон синглтона вместо передачи класса каждой форме.

using System;

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}

Это гарантирует, что у вас будет один и тот же экземпляр класса, а затем вы сможете поделиться этим классом с другими формами.Если вы передадите класс другим формам, он может стать довольно грязным.

http://msdn.microsoft.com/en-us/library/ff650316.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...