![]() |
#1 |
Участник
|
параметры типов (type parameters) в Ax
Доброго времени суток.
есть ли способ использовать параметры типов(type parameters) при вызове из Ax? для получения составного типа? например: c# Код: public class ClassS <T> { .... } ClassS<int> ClassS = new ClassS<int>(); AX 2009 SP1 RU7, SQL server 2008 r2 |
|
![]() |
#2 |
Участник
|
В явном виде нет. Есть тип AnyType. Можно при помощи него сделать что-нибудь похожее.
Расскажите что именно вы пытаетесь реализовать. Может быть найдётся более стандартный для аксапты способ ![]() |
|
![]() |
#3 |
Участник
|
конкретнее OpenXml
![]() Код: str relId; System.Exception ex; DocumentFormat.OpenXml.Packaging.SpreadsheetDocument package; DocumentFormat.OpenXml.Packaging.WorkbookPart workbookPart; DocumentFormat.OpenXml.Packaging.WorksheetPart worksheetPart; DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet; ........... ; new InteropPermission(InteropKind::ComInterop).assert(); try { package = DocumentFormat.OpenXml.Packaging.SpreadsheetDocument::Create("c:\\test.xlsx", DocumentFormat.OpenXml.SpreadsheetDocumentType::Workbook); workbookPart = package.AddWorkbookPart(); worksheetPart = workbookPart.AddNewPart(); // в реале надо // worksheetPart = workbookPart.AddNewPart<worksheetPart>(); // либо // worksheetPart = workbookPart.AddNewPart(of worksheetPart)(); // а так валится с руганью в сторону позднего связывания (логично) } } catch (Exception::CLRError) { ex = CLRInterop::getLastException(); package.Close(); info(ex.get_Message() ); } CodeAccessPermission::revertAssert(); |
|
![]() |
#4 |
Участник
|
А чем не устраивает стандартное семейство классов SysExcel?
|
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Цитата:
хотя.... можно же проще. Только всё равно таскать за собой обработчик... не айс Последний раз редактировалось alexbn; 23.05.2012 в 08:05. |
|
![]() |
#7 |
Участник
|
|
|
![]() |
#8 |
Участник
|
А перебить свойство RunOn у десятка-другого классов - не судьба?..
Дженерики в Х++ не поддерживаются вплоть до АХ 2012 включительно, так что в ближайшее время непосредственная работа с OpenXml в Аксапте, без дополнительных прослоек, вам не грозит. Последний раз редактировалось gl00mie; 23.05.2012 в 08:11. |
|
![]() |
#9 |
Участник
|
не вариант.
пруфлинк есть? Вот много тут тем по поводу как запустить excel на сервере, менять удостоверения, прописывать права. и постоянно наталкиваться на проблемы с памятью, удостоверениями и т.п. Учитывая, что вообще, как я понял, microsoft office не предполагает серверной автоматизации (это логично). Последний раз редактировалось alexbn; 23.05.2012 в 08:39. |
|
![]() |
#10 |
Участник
|
|
|
![]() |
#11 |
Участник
|
Последний раз редактировалось gl00mie; 23.05.2012 в 09:06. |
|
![]() |
#12 |
Участник
|
|
|
![]() |
#13 |
Участник
|
Цитата:
Сообщение от alexbn
![]() не вариант.
пруфлинк есть? Вот много тут тем по поводу как запустить excel на сервере, менять удостоверения, прописывать права. и постоянно наталкиваться на проблемы с памятью, удостоверениями и т.п. Учитывая, что вообще, как я понял, microsoft office не предполагает серверной автоматизации (это логично). (Это, кстати, будет работать значительно быстрее чем сам ексель) Например http://www.gemboxsoftware.com/spread...FcSIDgod11TZ1w или http://www.aspose.com/categories/.ne...t/default.aspx Они будут прекрасно работать на стороне сервера. Чем вам не серверная автоматизация ? Правда они платные... ![]() |
|
![]() |
#15 |
Участник
|
Цитата:
Я думал что, например, такой код из 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). |
![]() |
#16 |
Участник
|
Добрый день!
(вопрос относится к данной теме весьма косвенно) Чем можно инициализировать .Net Delegate class? А именно: System.EventHandler. Последний раз редактировалось Товарищ ♂uatr; 05.06.2015 в 14:42. |
|
![]() |
#17 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Товарищ ♂uatr (1), Logger (1). |
Теги |
.net, clr, generic, type parameters, полезное |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|