Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
typedef enum {
/**
* Represents a JavaScript object. This vartype is not currently usable
* from modules, although it is used internally for some tasks. These objects
* are reference counted, so AddRef() and Release() must be used properly to
* avoid memory leaks.
*/
PP_VARTYPE_OBJECT = 6,
let HttpClient=await NetWrap.GetType("System.Net.Http.HttpClient","System.Net.Http.dll");
let HttpClientHandler = await NetWrap.GetType("System.Net.Http.HttpClientHandler","System.Net.Http.dll");
let client=await NetWrap.new(HttpClient);
let responst= await (await client.GetStringAsync("https://msdn.microsoft.com/ru-ru/library/hh551745(v=vs.118).aspx")).Result();
//Result вызываем как функцию
Для чего это нужно. То есть вы даже не догадались Task переводить в promise?
А у вас уже реализована нормальная передача из js-кода в .Net-код делегатов?
static Delegate ПолучитьДелегатПоТипу(IPropertyOrFieldInfo Свойcтво)
{
var ReturnType = Свойcтво.GetPropertyType();
if (ReturnType == typeof(Action<string, string, object>)) return new Action<string, string, object>(ВызватьВнешнееСобытиеСОбъектом);
if (ReturnType == typeof(Action<string, string, string>)) return new Action<string, string, string>(AutoWrap.ВызватьВнешнееСобытие1С);
throw new Exception("Не не нужного типа " + ReturnType.ToString());
}
public static void УстановитьДелегатДляВызоваВнешнегоСобытия(object объект, string ИмяДелегата)
{
var Свойcтво = НайтиСвойство(объект, ИмяДелегата);
var value = ПолучитьДелегатПоТипу(Свойcтво);
Свойcтво.SetValue(объект, value);
}
let response= await client.async.GetStringAsync("https://msdn.microsoft.com/ru-ru/library/hh551745(v=vs.118).aspx")
В этом нет смысла. Достаточно проверять возвращаемое значение на Task и отдельно его обрабатывать.
var HtmlAnchorElement = document.QuerySelector<IHtmlAnchorElement>(rowSelector);
let HtmlAnchorElement = avait doc.in(IHtmlAnchorElement).QuerySelector(rowSelector));
let obj= await obj.as("IEnumerable");
или
let obj= await obj.as(IEnumerable);
Вам не нужен Task.WhenAll потомучто есть Promise.all
Нет, его решение позволяет подключить любую class Library с синхронными методами и (важно!) без событий и обратных вызовов.
public static object СоздатьОберткуДляСобытий(Object ОбъектССобытиями)
{
Type тип = ОбъектССобытиями.GetType();
Type genType = typeof(КомВраперДляСобытий<>);
Type constructed = genType.MakeGenericType(new Type[] { тип });
var ИмяСвойства = "СоздательОбертки";
var fi = constructed.GetField(ИмяСвойства);
Delegate функция = (Delegate)fi.GetValue(null);
// Получили делегат
// И из него получим объект обертку для событий который передадим в 1С для хранения ссылки на него
object обертка = функция.DynamicInvoke(new Action<string,string,object>(ВызватьВнешнееСобытиеСОбъектом), ОбъектССобытиями);
return обертка;
}
<packageSources>
<add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
ASP.NET Core, Angular 2, SignalR для чайников