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);
}
}
Множественный доступ C#
Допустим у меня есть класс компонента, встраиваемый в приложение.
Пусть его имя 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
Если нет, то тоже ответ меня устроит.
Знаю. К статическому классу имей доступ как хочеш.
Из любой дочки. Но по эстетическим причинам меня это не устраивает.
Бывает ли другая реализация ?
Цитата: GlazkovD
Причем из объектов. Возможно ли. скажите что почитать ибо дуб зеленый я в .NET
Возможно. Как сделать - написано в ЛЮБОЙ книге по C#/.NET.
Меня интересует общение между равноправными по иерархии классами.
Т.е. Главный--->объект класса №1
|
|-------------объект класса №2
Собственно как. На что нибудь намекните. Кроме MSDN.
public class некий_класс{
public static class общие данные{
public static byte Field;
}
public class SomeThatCanWorkWithField{
}
public class OtherThatCanWorkWithField{
}
}
и при этом эта статика доступна не выше некий_класс.
Что в принципе задачу решает. Но. возможно это не красиво.