// ГруппаОбъектов похоже на папку только вместо имен номера public void ПереносПАвДругоеПростр(ГруппаОбъектов дрПространство, Псевдоактивности ПА) { var аПАновое = дрПространство.Добавить(ПА); // здесь Адрес уже полный по нему можно найти адрес в Куче СобствАдрес Па меняется foreach (var связь in ПА.СписокСвязей) { var старыйАдрес = связь.СобственныйАдресПримитива; var новыйАдресСвязь = дрПространство.Добавить(связь); связь.АдресСобПА = аПАновое; // если связь содержит Удаленную Связь ( в случае только Входящей связи, удаленные неизвестны) Удаленные ПА потеряют эту ПА if (связь.Направление == ТиНапрвления.Входящая) { // можно оставить переадресацию, вместо СпецСвязи, по старому адресу будет новый адрес или Прокси. var прокси = new Переадресация() { НовыйАдрес = новыйАдресСвязь }; ((ГруппаОбъектов)старыйАдрес.АдресРегистратора.АдресВКучеПамяти()).Заменить(старыйАдрес, прокси); } else { if (связь.Направление != ТиНапрвления.Исходящая) { связь.УдаленнаяСвязь.АдресУдаленойСвязи = новыйАдресСвязь; // сообщение удаленой связи о смене своего адреса // адрес связи в Куче не меняется } // в противном случае УдаленнаяСвяь ничего незнает об этой связи } } }
static Клавиатура() { //var КультураИнфо = InputLanguageManager.Current.CurrentInputLanguage; byte первый = 0; byte последний = 172; var именаКлавиш = Enum.GetNames(typeof(Key)); var номер = Enum.ToObject(typeof(Key), 10); var h = new Key(); var Юникод = (int)Key.A; foreach (var клавиша in именаКлавиш) { Клавиши.Добавить(new Строка(клавиша)); } ЮНИКОДСимволКодыРусскихБуквПрописные = new ГруппаТипизированная() { ТипХранящихсяОбъектов = typeof(Символ) }; var ЮНИКОДСимволКодыРусскихБуквЗаглавные = new ГруппаТипизированная() { ТипХранящихсяОбъектов = typeof(Символ) }; ЮНИКОДРусскихБукв = new ГруппаОбъектов(); char большая; for (var с = 'а'; с <= 'е'; с++) { большая = с.ToString().ToUpper()[0]; ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(большая)); ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(с)); ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло(с)); } большая = 'ё'.ToString().ToUpper()[0]; ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(большая)); ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ('ё')); ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло('ё')); for (var с = 'ж'; с <= 'я'; с++) { большая = с.ToString().ToUpper()[0]; ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(большая)); ЮНИКОДСимволКодыРусскихБуквПрописные.Добавить(new Символ(с)); ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло(с)); } var русскаяРаскладка = new Dictionary <Key, char> { [Key.F] = 'а', [Key.OemComma] = 'б', [Key.D] = 'в', [Key.U] = 'г', [Key.L] = 'д', [Key.T] = 'е', [Key.Oem3] = 'ё', [Key.Oem1] = 'ж', [Key.P] = 'з', [Key.B] = 'и', [Key.Q] = 'й', [Key.R] = 'к', [Key.K] = 'л', [Key.V] = 'м', [Key.Y] = 'н', [Key.J] = 'о', [Key.G] = 'п', [Key.H] = 'р', [Key.C] = 'с', [Key.N] = 'т', [Key.E] = 'у', [Key.A] = 'ф', [Key.Oem4] = 'х', [Key.W] = 'ц', [Key.I] = 'ш', [Key.O] = 'щ', [Key.M] = 'ь', [Key.Oem6] = 'ъ', [Key.Oem7] = 'э', [Key.OemPeriod] = 'ю', [Key.Z] = 'я' }; усскаяРаскладка = new Dictionary <Key, Адрес>(); // здесь должна быть пара key, modifiers //}; // или Инт это трансформация // слварь это описание типа связей между элементами (одностороней поиск по ключу) // клавишам можно сопаставить действия (удалить, Вставить,) //var словарьЮникода = new Dictionary<Адрес, Строка>(); // либо инт foreach (var key in русскаяРаскладка.Keys) { try { var символ = русскаяРаскладка[key]; усскаяРаскладка[key] = ЮНИКОДСимволКодыРусскихБуквПрописные.Список.Find( c => ((Символ)c).Значение == символ).СобственныйАдресПримитива; } catch { } } }
public static void Main(string[] имяФайла) { var conv = new KeyConverter(); var cult = CultureInfo.GetCultureInfo("ru"); var s = conv.ConvertToString(null, CultureInfo.GetCultureInfo("ru"), Key.A); //var sru = //var k = conv.ConvertFromString("ф"); Хранилище.Типы.Add(typeof(Выходное_устройство)); Хранилище.Типы.Add(typeof(Входное_устройство)); Хранилище.Типы.Add(typeof(АПереадресация)); Хранилище.Типы.Add(typeof(АссинхроннаяПереадресация)); Хранилище.Типы.Add(typeof(ДобавитьВХранилище)); Хранилище.ПересчитатьКодыТипов(); //ДисковоеХранилище.Тест(); if (имяФайла.Length != 0) { try { Хранилище.Восстановить(имяФайла[0]); } catch { MessageBox.Show(" Не удалось восстановить диспетчер"); } } else { //var сервер = new Сервер_хранилища(); var адресРегистратра = Хранилище.Добавить(new егистраторАдресов());// регистратор по 0 адресу СтрокаЮникода.Создать("место хранения"); СтрокаЮникода.Создать("Имя"); Хранилище.Добавить(new АдресВХранилище()); var словарь = new СловарьПлохой(); словарь.Добавить(new СтрокаЮникода() { Значение = "ключ" }, new СтрокаЮникода() { Значение = "значение" }); словарь.Добавить(new СтрокаЮникода() { Значение = "ключ2" }, new СтрокаЮникода() { Значение = "значение2" }); Хранилище.Добавить(словарь); var группа = new ГруппаОбъектов(); Хранилище.Добавить(группа); группа.Добавить(new АдресВХранилище() { НомерВХранилище = 1 }); группа.Добавить(new АдресВХранилище() { НомерВХранилище = 2 }); группа.Добавить(new СтрокаЮникода() { Значение = "строка добавленая в группу" }); //var тспсервер = new ТСПСвязьВходящая(); //тспсервер.Старт(); var гр = new ГруппаОбъектов(); Хранилище.Добавить(гр); var Группа2 = new ГруппаАдресовИзСловаря(); Группа2.Перечисление = Клавиатура.ЮНИКОДСимволКодыРусскихБуквПрописные; гр.Добавить(Группа2); гр.Добавить(new АдресВХранилище() { НомерВХранилище = 1 }); гр.Добавить(new АдресВГруппе() { НомерВГруппе = 12 }); гр.Добавить(new СтрокаЮникода() { Значение = "строка из группы" }); гр.Добавить(new Пустота()); var гр2 = new ГруппаОбъектов(); гр.Добавить(гр2); гр2.Добавить(new СтрокаЮникода() { Значение = "строка из группы" }); гр2.Добавить(new Пустота()); гр2.Добавить(new СтрокаЮникода() { Значение = "строка из группы" }); Dictionary <Type, Type> видыОбъектов = new Dictionary <Type, Type>() { [typeof(ГруппаОбъектов)] = typeof(ВидГруппаОбъектов), [typeof(СтрокаЮникода)] = typeof(ВидСтрока), [typeof(Символ)] = typeof(ВидСимвола), [typeof(ГруппаАдресовИзСловаря)] = typeof(ВидГруппаГоризонтальная), [typeof(ПроксиОбъекта)] = typeof(ВидЗначениеАдреса) }; var окноГруппы = new ВидОкно(); окноГруппы.ВыборВидов = видыОбъектов; // объекты должны иметь свободные слоты, которые добавляются из справочника по мере надобности, ненужные не создаются похоже на список переменных в блоке кода окноГруппы.ДобавьСодержание(гр); окноГруппы.Показать(); var вывод = new Выходное_устройство() { Имя = new СтрокаЮникода("Окно Вывода полученого текста") }; var адресВывод = Хранилище.Добавить(вывод); var адресСвязиВывод = вывод.ДобавьСвязь(new Связь() { ольУдаленного = "поставщик", ТипСвязи = "входящая", ИмяСвязи = "Связь входящая выводного окна" }); вывод.Запуск(); var переадресация = new АссинхроннаяПереадресация(); var адреспере = Хранилище.Добавить(переадресация); var адресСвязиПере = переадресация.ДобавьСвязь(new Связь() { ольУдаленного = "поставщик", ТипСвязи = "входящая" }); переадресация.ДобавьСвязь(new Связь() { ольУдаленного = "получатель", ТипСвязи = "исходящая", }); var адресдВХ = Хранилище.Добавить(new ДобавитьВХранилище()); var ввод = new Входное_устройство(); var адресввода = Хранилище.Добавить(ввод); ввод.Запуск(); var удалЦелое1 = new Активность(); } var a = new Application(); w = new ОкноХранилища(); var ff = new DependencyObject(); ff.SetValue(Control.BackgroundProperty, Brushes.LightBlue); var ht = ff.GetValue(Control.BackgroundProperty); a.Run(w); // после завершение приложеня }
public static void ИнициализацияСловарейЯзыков() { // это безымянные группы var ЮНИКОДСимволКодыРусскихБукв = new ГруппаТипизированная() { ТипХранящихсяОбъектов = typeof(Символ) }; Хранилище.Добавить(ЮНИКОДСимволКодыРусскихБукв); //Клавиатура.ЮНИКОДСимволКодыРусскихБукв = ЮНИКОДСимволКодыРусскихБукв; var ЮНИКОДРусскихБукв = new ГруппаОбъектов(); Хранилище.Добавить(ЮНИКОДРусскихБукв); //Клавиатура.ЮНИКОДРусскихБукв = ЮНИКОДРусскихБукв; for (var с = 'а'; с <= 'я'; с++) { ЮНИКОДСимволКодыРусскихБукв.Добавить(new Символ(с)); ЮНИКОДРусскихБукв.Добавить(new ЦелоеЧисло(с)); } //------------------------------------ var актБуквы = new Активность() { Имя = "русские буквы" }; // группа всех букв русских например var адресАктБуквы = Хранилище.Добавить(актБуквы); var связь0 = new СвязьПамять { ИмяСвязи = "1, а",// номер в алфавите, изображение ТипСвязи = "имеет члена" }; актБуквы.ДобавьСвязь(связь0); // активность представляет конкретную букву // имеет код юникода, изображения возможно прямые, возможно через код Юникода // является членом группы Русские буквы это Группа словосочетания // Активности могут быть не активными, ничего не делать только указывать пути // Активности группы var актБуква = new Активность() { Имя = "буква а" }; var адресАктБуква = Хранилище.Добавить(актБуква); var связь11 = new СвязьПамять { ИмяСвязи = "член группы", ТипСвязи = "это", //или является членом группы АдресУдаленнойСвязи = связь0.АдресСобственный }; актБуква.ДобавьСвязь(связь11); var связь10 = new СвязьПамять { ИмяСвязи = "Код Юникода", ТипСвязи = "имеет" // соответсвует }; var адрессвязи1 = актБуква.ДобавьСвязь(связь10); // имеет связь с конкретной буквой, связь с группой "Коды Юникода" var актКод = new АктивностьЗначение() { Значение = new Символ('а') }; актКод.Имя = "Код ЮНИКОДА а"; // это ответ на вопрос Что это? совпадает с связью с группой var связь2 = new СвязьПамять(); связь2.ИмяСвязи = "Буква"; связь2.ТипСвязи = "чей"; //чей это код var адрессвязи2 = актКод.ДобавьСвязь(связь2); связь2.АдресУдаленнойСвязи = адрессвязи1; }
public ГруппаНумератор(ГруппаОбъектов группа) { Группа = группа; }
public НумераторГруппы(ГруппаОбъектов группа) { Группа = группа; }