Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11653
Последний выпуск: 19.06.2015

Господа знатоки!!!

65K
20 января 2011 года
nagan.92
7 / / 20.01.2011
Господа знатоки!!! подскажите пожалуйста как объявит класс 3 чтобы в нем можно было изменять данные как из класса 1 так и из класса 2 (верхняя картинка) не могу понять... пока получается как на нижней картинке...
............╔════════╗..........................
............║...класс3...║ .........................
............╚════════╝..........................
.....................▲................................
...................../\.................................
..................../..\................................
.................../....\...............................
................../......\..............................
................./........\.............................
╔════════╗......╔════════╗..............
║...класс1...║......║...класс2...║ ...........
╚════════╝......╚════════╝...............
*********************************
╔════════╗......╔════════╗..............
║...класс3...║......║...класс3...║ ...........
╚════════╝......╚════════╝...............
........▲......................▲.....................
........║.......................║......................
╔════════╗......╔════════╗..............
║...класс1...║......║..класс2....║ ...........
╚════════╝......╚════════╝...............
2.0K
20 января 2011 года
Norgat
452 / / 12.08.2009
Для начала неплохо бы увидеть твой код.
65K
20 января 2011 года
nagan.92
7 / / 20.01.2011
да тут все стандартно
вот, я все лишнее поубирал
Код:
namespace irc_server
{

    class ClientConnection//------------------------ класс 1 он же класс 2
    {

        user_cfg user_CONFIG = new user_cfg();

        public ClientConnection(Socket AcceptedSocket,int Num)
        {
            user_CONFIG[0] = true;/*0 в зависимости от номера класа 0, 1, 2, 3 и т.д*/
           
        }

    }
}


namespace irc_server
{

    class user_cfg//-----------------------------------класс 3
    {
        public bool[] ONLINE[256];
    }
}

вот мне нужно из каждого нового(классы создаются динамически без какой либо закономерности - подключился клиент создался класс) класса 1 был доступ к данным класса 3
2.0K
20 января 2011 года
Norgat
452 / / 12.08.2009
Если я тебя правильно понял, то тебе нужно использовать паттерн Синглетон

Вот примерчик накидал:

UserConfig - создастся только один экземпляр этого класса
Код:
// Класс конфигов
    public class UserConfig
    {
        private string _cfgString;
        private int _count;
        protected UserConfig()
        {
            this._cfgString = "BASE CONFIG";
            this._count = 0;
        }

        private sealed class SingletonCreator
        {
            // Единственный объект который будет создан будет храниться сдесь
            private static readonly UserConfig instance = new UserConfig();

            public static UserConfig Instance
            {
                get { return instance; }
            }
        }

        // Доступ к объекту будет производиться через этот метод
        public static UserConfig Instance
        {
            get { return SingletonCreator.Instance; }
        }

        // Доступ к строке конфигурации
        public string Config
        {
            get
            {
                this._count += 1;
                return this._cfgString + this._count.ToString();
            }
        }
    }


ClientConnection - коннекшенов уже создастся сколько душе угодно, но все они будут хранить у себя ссылку на единственный экземпляр UserConfig
Код:
class ClientConnection
    {
        private UserConfig _usrCnf = UserConfig.Instance;
        private string _userName;

        public ClientConnection(string UserName)
        {
            this._userName = UserName;
        }

        // Получить конфиг у юзера
        public string Config
        {
            get { return this._usrCnf.Config; }
        }

        // Получить имя юзера
        public string Name
        {
            get { return this._userName; }
        }
    }


Ну и тест:
Код:
class Program
    {
        static void Main(string[] args)
        {
            // Создадим десяток юзеров
            var UserList = new List<ClientConnection>();
            for (var i = 0; i < 10; ++i)
                UserList.Add(new ClientConnection("User" + i.ToString()));

            // Опросим их
            foreach (var user in UserList)
                Console.WriteLine("Name: {0}; Config: {1}", user.Name, user.Config);

            Console.ReadLine();
        }
    }


Результат посмотри сам


П.С. судя по всему у тебя в голове каша из терминов ООП. Класс - это тип данных, так сказать. Создётся - экземпляр класса.

П.С.С. юзай тег CODE (см. подпись)
65K
20 января 2011 года
nagan.92
7 / / 20.01.2011
Огромное, спасибище...:)
65K
20 января 2011 года
nagan.92
7 / / 20.01.2011
 
Код:
// Единственный объект который будет создан будет храниться сдесь
            private static readonly UserConfig instance = new UserConfig();

            public static UserConfig Instance
            {
                get { return instance; }
            }

как readonly? туда запись возможно?
2.0K
20 января 2011 года
Norgat
452 / / 12.08.2009
readonly поле можно записать один раз - в static конструкторе класса: http://msdn.microsoft.com/ru-ru/library/acdd6hb7.aspx
65K
20 января 2011 года
nagan.92
7 / / 20.01.2011
Цитата: Norgat
readonly поле можно записать один раз - в static конструкторе класса



блин ты извени конечно но я не профи))))
Вопрос такой, с помошь паттерна Синглтона возможна запись или только чтение?

2.0K
20 января 2011 года
Norgat
452 / / 12.08.2009
Цитата: nagan.92
блин ты извени конечно но я не профи))))
Вопрос такой, с помошь паттерна Синглтона возможна запись или только чтение?



Естественно можно изменять состояние объекта-синглетона(добавить к свойствам сеттер(т.е. определить и get и set)). Но создать больше одной копии этого объекта - нельзя.

п.с. если это не то, что тебе нужно, то лучше опиши задачу конкретней.

65K
20 января 2011 года
nagan.92
7 / / 20.01.2011
Двойное спасибище...:)
вот нащел по проще вроде как http://www.osp.ru/pcworld/2009/12/11075750/ щас буду расбираться
65K
20 января 2011 года
nagan.92
7 / / 20.01.2011
Цитата: Norgat

п.с. если это не то, что тебе нужно, то лучше опиши задачу конкретней.



не не ты правильно меня понял просто мне нужно не только чтение но и запись:)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог