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

Ваш аккаунт

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

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

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

Множественный доступ C#

76K
15 ноября 2011 года
GlazkovD
3 / / 15.11.2011
Вечно мучает вопрос. Решил задать.
Допустим у меня есть класс компонента, встраиваемый в приложение.
Пусть его имя Comp.
Назвовем класс компонента(без GUI): управляющий.
Ну WinForm приложение создает объект управляющий(Object)

Конечно я скорее понял что C# строится на следующем законе:
управляющий(объект)--->Class дочерний1(объект)-->Class дочерний2(объект)
Объект дочернего1 я создаю в управляющем(объекте)
Объект дочернего2 я создаю в классе дочерний 1

Допусти так. Я живу и влавствую в классе управляющий.
Но у меня допустим есть какая то информация. в классе дочерний2.
Например это массив байт.
Я живу в управляющем объекте(т.е. управляющий t = new управляющий(ляляля)

Затем изнутри объекта данного класса создать дочерний 1, который создаст дочерний 2.
Причем обращение будет идти как к объектам. По иерархии все хорошо.
Лазь по иерархии из управляющий(Object)-->дочерний1(Obj)--->дочерний2(Obj)

Возможно ли как либо создание следующей конструкции(не будем про безопасный код и маршализацию). На святых канонах .NET
Допустим у меня(по привычке ANSI C) хочется следующее.
Я в объекте класса дочерний 2 что то делаю.
Без всяких заморочек влезть в управляющий и там изменить значение переменной.
Ну или без всяких заморочек из дочерний1 влезть в управляющий.

Понимаю что создать дочерний1:Управляющий и Дочерний2:управляющий можно.
Но у каждой дочерки будут свои собственные копии переменных(управляющий) Хочу вроде статического класса(где кто угодно туда лазит), но не статический.
Причем из объектов. Возможно ли. скажите что почитать ибо дуб зеленый я в .NET

Если нет, то тоже ответ меня устроит.

Знаю. К статическому классу имей доступ как хочеш.
Из любой дочки. Но по эстетическим причинам меня это не устраивает.
Бывает ли другая реализация ?
5
16 ноября 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: GlazkovD
Причем из объектов. Возможно ли. скажите что почитать ибо дуб зеленый я в .NET

Возможно. Как сделать - написано в ЛЮБОЙ книге по C#/.NET.

76K
16 ноября 2011 года
GlazkovD
3 / / 15.11.2011
Спасибо. Классный ответ. Не знал.
Меня интересует общение между равноправными по иерархии классами.
Т.е. Главный--->объект класса №1
|
|-------------объект класса №2

Собственно как. На что нибудь намекните. Кроме MSDN.
76K
16 ноября 2011 года
GlazkovD
3 / / 15.11.2011
Пока только удается так.

public class некий_класс{
public static class общие данные{
public static byte Field;
}

public class SomeThatCanWorkWithField{
}

public class OtherThatCanWorkWithField{
}
}

и при этом эта статика доступна не выше некий_класс.
Что в принципе задачу решает. Но. возможно это не красиво.
5
16 ноября 2011 года
hardcase
4.5K / / 09.08.2005
Код:
using System;

public class SharedData
{
    public byte Field = 0;
}

public class Class1
{
    public Class1(SharedData sharedData)
    {
        _sharedData = sharedData;
    }
   
    public void Foo()
    {
        _sharedData.Field = 1;
    }
   
    private readonly SharedData _sharedData;
}

public class Class2
{
    public Class2(SharedData sharedData)
    {
        _sharedData = sharedData;
    }

    public void Bar()
    {
        _sharedData.Field = 2;
    }

    private readonly SharedData _sharedData;
}

public static class Program
{
    static void Main()
    {
        var sharedData = new SharedData();
        Console.WriteLine(sharedData.Field);
       
        var c1 = new Class1(sharedData);
        var c2 = new Class2(sharedData);
       
        c1.Foo();
        Console.WriteLine(sharedData.Field);
       
        c2.Bar();
        Console.WriteLine(sharedData.Field);
    }  
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог