Сообщение Re: .Net Core. Вызов манагед кода из натива от 24.06.2016 7:52
Изменено 24.06.2016 8:04 Serginio1
Здравствуйте, Serginio1, Вы писали:
Ну не прошло и 2 недели. Сделал и для 1С.
Пока сделал для Win. Допилю еще вызовы методов расширений. Вызов дженериков определяемых по типу.
Но помоему никому это не надо.
Ну не прошло и 2 недели. Сделал и для 1С.
Перем Врап,СсылкаНаДомен;
Функция СоздатьОбъектПоСсылке(Ссылка)
рез = Новый("AddIn.NetObjectToNative.NetObjectToNative");
рез.УстановитьСсылку(СсылкаНаДомен,Ссылка);
возврат рез
КонецФункции // СоздатьОбъектПоСсылке()
Процедура КнопкаВыполнитьНажатие(Кнопка)
СылкаСБ=Врап.Новый("System.Text.StringBuilder","Первая Строка");
//Сообщить(СылкаСБ);
СсылкаCultureInfo=Врап.ПолучитьТип("System.Globalization.CultureInfo");
СсылкаCultureInfo=Врап.Новый(СсылкаCultureInfo,"es-ES");
//
СultureInfo=СоздатьОбъектПоСсылке(СсылкаCultureInfo);
СБ=СоздатьОбъектПоСсылке(СылкаСБ);
Сообщить(СБ.Capacity);
Сообщить(СБ.ПолучитьСсылку());
СсылкаInvariantCulture=СultureInfo.InvariantCulture;
// К сожалению 1С вызывает метод имеющий возвращаемое значение как функцию даже если вызов идет как процедура
//Нужно очистить ссылку в списке объектов
ссылка=Сб.Append("Новая Строка"); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.Append("Вторая Строка"); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendFormat("AppendFormat {0}, {1}, {2}, {3}, {4},", "Строка", 21, 45.89, ТекущаяДата(),истина ); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
// Так как в параметрах можно передавать только простые типы закодирум ссылку на объект в строку
ссылка=Сб.AppendFormat(СсылкаCultureInfo,"AppendFormat {0}, {1}, {2}, {3}, {4},", "Строка", 21, 45.89, ТекущаяДата(),истина ); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendFormat(СсылкаInvariantCulture,"AppendFormat {0}, {1}, {2}, {3}, {4},", "Строка", 21, 45.89, ТекущаяДата(),истина );
Врап.ОчиститьСсылку(СсылкаInvariantCulture);
Сообщить(СБ.ToString());
СБ.Capacity=40;
Сообщить(СБ.Capacity);
// Очистка ссылок СБ и СultureInfo осуществляется внутри ВК
КонецПроцедуры
Процедура ПриОткрытии()
// Макет = ПолучитьМакет("ВнешняяКомпонента");
// Макет.Записать(ИмяФайла);
ИмяФайла="d:\MyPrograms\VNCOMP83\AddInNetObjectToNative\AddInNetObjectToNative\Debug\AddInNetObjectToNative.dll";
ПодключитьВнешнююКомпоненту(ИмяФайла, "NetObjectToNative",ТипВнешнейКомпоненты.Native);
Врап = Новый("AddIn.NetObjectToNative.LoaderCLR");
CoreClrDir="c:\Program Files\DNX\runtimes\dnx-coreclr-win-x86.1.0.0-rc1-update1\bin\";
ДиректорияNetObjectToNative="d:\MyPrograms\VNCOMP83\NetObjectToNative\NetObjectToNative\bin\Debug\";
СсылкаНаДомен=Врап.СоздатьОбертку(CoreClrDir,ДиректорияNetObjectToNative,"");
КонецПроцедуры
Пока сделал для Win. Допилю еще вызовы методов расширений. Вызов дженериков определяемых по типу.
Но помоему никому это не надо.
Re: .Net Core. Вызов манагед кода из натива
Здравствуйте, Serginio1, Вы писали:
Ну не прошло и 2 недели. Сделал и для 1С.
Пока сделал для Win. Допилю еще вызовы методов расширений. Вызов дженериков определяемых по типу.
Но помоему никому это не надо.
Ну не прошло и 2 недели. Сделал и для 1С.
Перем Врап,СсылкаНаДомен;
Функция СоздатьОбъектПоСсылке(Ссылка)
рез = Новый("AddIn.NetObjectToNative.NetObjectToNative");
рез.УстановитьСсылку(СсылкаНаДомен,Ссылка);
возврат рез
КонецФункции // СоздатьОбъектПоСсылке()
Процедура КнопкаВыполнитьНажатие(Кнопка)
СылкаСБ=Врап.Новый("System.Text.StringBuilder","Первая Строка");
СсылкаCultureInfo=Врап.ПолучитьТип("System.Globalization.CultureInfo");
СсылкаCultureInfoES=Врап.Новый(СсылкаCultureInfo,"es-ES");
//
СultureInfo=СоздатьОбъектПоСсылке(СсылкаCultureInfo);
СБ=СоздатьОбъектПоСсылке(СылкаСБ);
Сообщить(СБ.Capacity);
Сообщить(СБ.ПолучитьСсылку());
СсылкаInvariantCulture=СultureInfo.InvariantCulture;
// К сожалению 1С вызывает метод имеющий возвращаемое значение как функцию даже если вызов идет как процедура
//Нужно очистить ссылку в списке объектов
ссылка=Сб.Append("Новая Строка"); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.Append("Вторая Строка"); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendFormat("AppendFormat {0}, {1}, {2}, {3}, {4},", "Строка", 21, 45.89, ТекущаяДата(),истина ); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
// Так как в параметрах можно передавать только простые типы закодирум ссылку на объект в строку
ссылка=Сб.AppendFormat(СсылкаCultureInfoES,"AppendFormat {0}, {1}, {2}, {3}, {4},", "Строка", 21, 45.89, ТекущаяДата(),истина ); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendLine(); Врап.ОчиститьСсылку(ссылка);
ссылка=Сб.AppendFormat(СсылкаInvariantCulture,"AppendFormat {0}, {1}, {2}, {3}, {4},", "Строка", 21, 45.89, ТекущаяДата(),истина );
Врап.ОчиститьСсылку(СсылкаInvariantCulture);
Сообщить(СБ.ToString());
СБ.Capacity=40;
Сообщить(СБ.Capacity);
// Очистка ссылок СБ и СultureInfo осуществляется внутри ВК
КонецПроцедуры
Процедура ПриОткрытии()
ИмяФайла="d:\MyPrograms\VNCOMP83\AddInNetObjectToNative\AddInNetObjectToNative\Debug\AddInNetObjectToNative.dll";
ПодключитьВнешнююКомпоненту(ИмяФайла, "NetObjectToNative",ТипВнешнейКомпоненты.Native);
Врап = Новый("AddIn.NetObjectToNative.LoaderCLR");
CoreClrDir="c:\Program Files\DNX\runtimes\dnx-coreclr-win-x86.1.0.0-rc1-update1\bin\";
ДиректорияNetObjectToNative="d:\MyPrograms\VNCOMP83\NetObjectToNative\NetObjectToNative\bin\Debug\";
СсылкаНаДомен=Врап.СоздатьОбертку(CoreClrDir,ДиректорияNetObjectToNative,"");
КонецПроцедуры
Пока сделал для Win. Допилю еще вызовы методов расширений. Вызов дженериков определяемых по типу.
Но помоему никому это не надо.