Сообщение Re[10]: Приоритет вызова перегруженных методов от 08.06.2016 6:51
Изменено 08.06.2016 7:07 Serginio1
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>> Не читаешь ты. Прежде чем отправить в натив объект сохраняется в статическом массиве массиве. Жить он будет пока его из массива не удалят.
S>Ну, т.е. как и говорил, получаем или утечку объектов на managed-стороне, или адскую магию с рефкаунтингом (по, сути, переизобретение IUnknown).
S>Для сложных графов с изменяемыми свойствами-объектами тесты как минимум надо сделать
Опять не читаешь. На стороне 1С есть подсчет ссылок и Done при разрушении.
Кроме того могу выгрузить домен.
S>>>Вообще-то неизвестна, в рантайме определяется. Достаточно только набора значений.
S>> DLR то как раз статический. Но он мне все равно нужен для использования DynamicObject
S>Вот народ я с вас фигею. Вам дают карту с сокровищами, а вы требуете чтоб вас экспрессом минуя все три тома приключений доставили прямо в термал спа "Золотое кольцо" (магнитик на холодильник с Балрогом в подарок). Где ваша это... мазохизм? Стремление усложнить жизнь? Граблефилия? А, авантюризм, во!
S>Держите, скучный вы человек:
S>
S>Как допилить до вызова произвольного метода — сами-сами. Иначе вообще никакого удовольствия не будет.
S>
Спасибо! Веселый Вы наш. Но возникают вопросы
1. CallSite под определенную сигнатуру (CallSite<Action<CallSite, Type, object, object>> )
2. Как определить с params (удобно передавать без массива)
3. Каково время на компиляцию если для каждого вызова нужно создавать CallSite?
Но в любом случае огромное спасибо. Поковыряюсь.
Пока это мало чем отличается от T.GetMethod(имяМетода,Type[] типы);
S>Здравствуйте, Serginio1, Вы писали:
S>> Не читаешь ты. Прежде чем отправить в натив объект сохраняется в статическом массиве массиве. Жить он будет пока его из массива не удалят.
S>Ну, т.е. как и говорил, получаем или утечку объектов на managed-стороне, или адскую магию с рефкаунтингом (по, сути, переизобретение IUnknown).
S>Для сложных графов с изменяемыми свойствами-объектами тесты как минимум надо сделать
Опять не читаешь. На стороне 1С есть подсчет ссылок и Done при разрушении.
Кроме того могу выгрузить домен.
S>>>Вообще-то неизвестна, в рантайме определяется. Достаточно только набора значений.
S>> DLR то как раз статический. Но он мне все равно нужен для использования DynamicObject
S>Вот народ я с вас фигею. Вам дают карту с сокровищами, а вы требуете чтоб вас экспрессом минуя все три тома приключений доставили прямо в термал спа "Золотое кольцо" (магнитик на холодильник с Балрогом в подарок). Где ваша это... мазохизм? Стремление усложнить жизнь? Граблефилия? А, авантюризм, во!
S>Держите, скучный вы человек:
S>
S> private static CallSite<Action<CallSite, Type, object, object>> callSite;
S> static void Main(string[] args)
S> {
S> CallADynamic(1, 2);
S> CallADynamic(null, null);
S> CallADynamic(null, new object());
S> }
S> private static void CallADynamic(params object[] data)
S> {
S> if (callSite == null)
S> {
S> callSite =
S> CallSite<Action<CallSite, Type, object, object>>.Create(
S> Binder.InvokeMember(
S> CSharpBinderFlags.ResultDiscarded,
S> "CallA", null, typeof(Program), new CSharpArgumentInfo[]
S> {
S> CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
S> CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
S> CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
S> }));
S> }
S> callSite.Target(callSite, typeof(Program), data[0], data[1]);
S> }
S> static void CallA(params int[] args)
S> {
S> Console.WriteLine("params");
S> }
S> static void CallA(object a, object b)
S> {
S> Console.WriteLine("objects");
S> }
S> static void CallA(object a, string b)
S> {
S> Console.WriteLine("object+string");
S> }
S>
S>Как допилить до вызова произвольного метода — сами-сами. Иначе вообще никакого удовольствия не будет.
S>
P.S. | |
Спасибо! Веселый Вы наш. Но возникают вопросы
1. CallSite под определенную сигнатуру (CallSite<Action<CallSite, Type, object, object>> )
2. Как определить с params (удобно передавать без массива)
3. Каково время на компиляцию если для каждого вызова нужно создавать CallSite?
Но в любом случае огромное спасибо. Поковыряюсь.
Пока это мало чем отличается от T.GetMethod(имяМетода,Type[] типы);
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>> Не читаешь ты. Прежде чем отправить в натив объект сохраняется в статическом массиве массиве. Жить он будет пока его из массива не удалят.
S>Ну, т.е. как и говорил, получаем или утечку объектов на managed-стороне, или адскую магию с рефкаунтингом (по, сути, переизобретение IUnknown).
S>Для сложных графов с изменяемыми свойствами-объектами тесты как минимум надо сделать
Опять не читаешь. На стороне 1С есть подсчет ссылок и Done при разрушении.
Кроме того могу выгрузить домен.
S>>>Вообще-то неизвестна, в рантайме определяется. Достаточно только набора значений.
S>> DLR то как раз статический. Но он мне все равно нужен для использования DynamicObject
S>Вот народ я с вас фигею. Вам дают карту с сокровищами, а вы требуете чтоб вас экспрессом минуя все три тома приключений доставили прямо в термал спа "Золотое кольцо" (магнитик на холодильник с Балрогом в подарок). Где ваша это... мазохизм? Стремление усложнить жизнь? Граблефилия? А, авантюризм, во!
S>Держите, скучный вы человек:
S>
S>Как допилить до вызова произвольного метода — сами-сами. Иначе вообще никакого удовольствия не будет.
S>
Спасибо! Веселый Вы наш. Но возникают вопросы.
Я так понимаю, что можно создать Кучу CallSite<Action<CallSite, Type, object, object>>
По количеству аргументов и использовать их?
Оспасибо. Поковыряюсь.
S>Здравствуйте, Serginio1, Вы писали:
S>> Не читаешь ты. Прежде чем отправить в натив объект сохраняется в статическом массиве массиве. Жить он будет пока его из массива не удалят.
S>Ну, т.е. как и говорил, получаем или утечку объектов на managed-стороне, или адскую магию с рефкаунтингом (по, сути, переизобретение IUnknown).
S>Для сложных графов с изменяемыми свойствами-объектами тесты как минимум надо сделать
Опять не читаешь. На стороне 1С есть подсчет ссылок и Done при разрушении.
Кроме того могу выгрузить домен.
S>>>Вообще-то неизвестна, в рантайме определяется. Достаточно только набора значений.
S>> DLR то как раз статический. Но он мне все равно нужен для использования DynamicObject
S>Вот народ я с вас фигею. Вам дают карту с сокровищами, а вы требуете чтоб вас экспрессом минуя все три тома приключений доставили прямо в термал спа "Золотое кольцо" (магнитик на холодильник с Балрогом в подарок). Где ваша это... мазохизм? Стремление усложнить жизнь? Граблефилия? А, авантюризм, во!
S>Держите, скучный вы человек:
S>
S> private static CallSite<Action<CallSite, Type, object, object>> callSite;
S> static void Main(string[] args)
S> {
S> CallADynamic(1, 2);
S> CallADynamic(null, null);
S> CallADynamic(null, new object());
S> }
S> private static void CallADynamic(params object[] data)
S> {
S> if (callSite == null)
S> {
S> callSite =
S> CallSite<Action<CallSite, Type, object, object>>.Create(
S> Binder.InvokeMember(
S> CSharpBinderFlags.ResultDiscarded,
S> "CallA", null, typeof(Program), new CSharpArgumentInfo[]
S> {
S> CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
S> CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
S> CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
S> }));
S> }
S> callSite.Target(callSite, typeof(Program), data[0], data[1]);
S> }
S> static void CallA(params int[] args)
S> {
S> Console.WriteLine("params");
S> }
S> static void CallA(object a, object b)
S> {
S> Console.WriteLine("objects");
S> }
S> static void CallA(object a, string b)
S> {
S> Console.WriteLine("object+string");
S> }
S>
S>Как допилить до вызова произвольного метода — сами-сами. Иначе вообще никакого удовольствия не будет.
S>
P.S. | |
Спасибо! Веселый Вы наш. Но возникают вопросы.
Я так понимаю, что можно создать Кучу CallSite<Action<CallSite, Type, object, object>>
По количеству аргументов и использовать их?
Оспасибо. Поковыряюсь.