Показать сообщение отдельно
Старый 25.05.2012, 12:09   #15  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от VORP Посмотреть сообщение
Вызывать Generic функции из аксапты можно, если использовать .NET рефлекшен:
System.Reflection.MethodInfo - makeGenericMethod
Спасибо! Навело на мысль!!!

Я думал что, например, такой код из C#
X++:
System.Collections.Generic.List<int> l = new System.Collections.Generic.List<int>();

l.Add(1);
l.Add(2);

Console.WriteLine(l.Count);
В Аксапте сделать не реально. Но оказалось что можно, с изварещениями конечно:
X++:
static void Job67(Args _args)
{
    System.Type                     type;
    System.Object                   myIntList;
    System.Reflection.MethodInfo    methodAdd;
    System.Reflection.PropertyInfo  propertyCount;
    System.Object[]                 parameters;
    
    System.Object[]                 nil;
    
    System.Object                   nl;
    int                  cnt;
    ;
    type = System.Type::GetType("System.Collections.Generic.List`1[System.Int32]");
    
    myIntList = System.Activator::CreateInstance(type);
    
    methodAdd = type.GetMethod("Add");
    
    parameters = new System.Object[1]();

    parameters.SetValue(1, 0);
    methodAdd.Invoke(myIntList, parameters);
    
    parameters.SetValue(2, 0);
    methodAdd.Invoke(myIntList, parameters);
    
    propertyCount = type.GetProperty("Count");
    
    nil = new System.Object[0]();
    
    cnt = propertyCount.GetValue(myIntList, nil);
    
    info(strFmt("%1", cnt));
}
Может поможет кому...
За это сообщение автора поблагодарили: mazzy (2), Lemming (1), alexbn (1), sukhanchik (6), Logger (10), b_nosoff (1), Morpheus (2), coolibin (3), Krasher (1), perestoronin (1), S.Kuskov (3), plumbum (3), Cardagant (1), Товарищ ♂uatr (1), MazZzDaI (1).