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];
}
}
Господа знатоки!!!
............╔════════╗..........................
............║...класс3...║ .........................
............╚════════╝..........................
.....................▲................................
...................../\.................................
..................../..\................................
.................../....\...............................
................../......\..............................
................./........\.............................
╔════════╗......╔════════╗..............
║...класс1...║......║...класс2...║ ...........
╚════════╝......╚════════╝...............
*********************************
╔════════╗......╔════════╗..............
║...класс3...║......║...класс3...║ ...........
╚════════╝......╚════════╝...............
........▲......................▲.....................
........║.......................║......................
╔════════╗......╔════════╗..............
║...класс1...║......║..класс2....║ ...........
╚════════╝......╚════════╝...............
Для начала неплохо бы увидеть твой код.
вот, я все лишнее поубирал
Код:
вот мне нужно из каждого нового(классы создаются динамически без какой либо закономерности - подключился клиент создался класс) класса 1 был доступ к данным класса 3
Синглетон
Вот примерчик накидал:
UserConfig - создастся только один экземпляр этого класса
ClientConnection - коннекшенов уже создастся сколько душе угодно, но все они будут хранить у себя ссылку на единственный экземпляр UserConfig
Ну и тест:
Результат посмотри сам
П.С. судя по всему у тебя в голове каша из терминов ООП. Класс - это тип данных, так сказать. Создётся - экземпляр класса.
П.С.С. юзай тег CODE (см. подпись)
Если я тебя правильно понял, то тебе нужно использовать паттерн
Вот примерчик накидал:
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();
}
}
}
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; }
}
}
{
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();
}
}
{
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 (см. подпись)
Огромное, спасибище...:)
Код:
// Единственный объект который будет создан будет храниться сдесь
private static readonly UserConfig instance = new UserConfig();
public static UserConfig Instance
{
get { return instance; }
}
private static readonly UserConfig instance = new UserConfig();
public static UserConfig Instance
{
get { return instance; }
}
как readonly? туда запись возможно?
readonly поле можно записать один раз - в static конструкторе класса:
Цитата: Norgat
readonly поле можно записать один раз - в static конструкторе класса
блин ты извени конечно но я не профи))))
Вопрос такой, с помошь паттерна Синглтона возможна запись или только чтение?
Цитата: nagan.92
блин ты извени конечно но я не профи))))
Вопрос такой, с помошь паттерна Синглтона возможна запись или только чтение?
Вопрос такой, с помошь паттерна Синглтона возможна запись или только чтение?
Естественно можно изменять состояние объекта-синглетона(добавить к свойствам сеттер(т.е. определить и get и set)). Но создать больше одной копии этого объекта - нельзя.
п.с. если это не то, что тебе нужно, то лучше опиши задачу конкретней.
вот нащел по проще вроде как http://www.osp.ru/pcworld/2009/12/11075750/ щас буду расбираться
Цитата: Norgat
п.с. если это не то, что тебе нужно, то лучше опиши задачу конкретней.
не не ты правильно меня понял просто мне нужно не только чтение но и запись:)