|
|
|
|
#1 |
|
Участник
|
X++: public static System.Object getEnumValue(System.Enum _o) { System.Object ret; System.Reflection.Assembly assembly; System.Reflection.ConstructorInfo constructorInfo; System.Type enumType, enumGenericType, genericType; System.Type[] enumTypes; System.Object[] enumValues; str enumTypeStr, enumValueStr, assemblyStr; if (! CLRInterop::isNull(_o)) { try { enumValueStr = _o.ToString(); enumType = _o.GetType(); enumTypeStr = enumType.ToString(); assembly = enumType.get_Assembly(); //определяем .net сборку (по ENUM) assemblyStr = assembly.ToString(); enumGenericType = assembly.GetType (#OpenXmlGenericEnumValue); //тип DocumentFormat.OpenXml.EnumValue`1 assembly = null; if (CLRInterop::isNull(enumGenericType)) { enumType = null; throw error (strFmt(".net сборка '%1'(ENUM '%2') не содержит дженерик-тип %3", assemblyStr, enumTypeStr, #OpenXmlGenericEnumValue)); } //инициируем массив типов (с единственным элементом = enumType) enumTypes = new System.Type[1](); enumTypes.SetValue(enumType, 0); enumType = null; genericType = enumGenericType.MakeGenericType (enumTypes); //создаем generic DocumentFormat.OpenXml.EnumValue`1, приведенный к типу enumTypes enumGenericType = null; if (CLRInterop::isNull(genericType) || ! genericType.get_IsGenericType()) { throw error (strFmt("ENUM '%1' не является дженериком", enumTypeStr)); } constructorInfo = genericType.GetConstructor (enumTypes); //конструктор (для ENUM generic типа) genericType = null; enumTypes = null; //инициируем массив занчений значение ENUM (с единственным элементом= enumValueStr) enumValues = new System.Object[1](); enumValues.SetValue (CLRInterop::parseClrEnum(enumTypeStr, enumValueStr), 0); ret = constructorInfo.Invoke(enumValues); //создаем объект ENUM generic типа (с значением = enumValueStr) constructorInfo = null; enumValues = null; } catch { error (WMSCOMPrint::getClrErrorMessage()); } } return ret; } Цитата:
- метод создания дженерика еще немного подрихтовал(+ добавил комментарии)
|
|
|
|
| За это сообщение автора поблагодарили: S.Kuskov (10). | |
|
|
#2 |
|
Участник
|
Поделитесь, пожалуйста, работающим законченным кодом для вставки картинки в XMLExcelReport_RU в D365FO.
В идеале, чтобы вообще не разбираться что и как там работает) По кусочкам из этой темы как-то сложно всю картину собрать. Для примера скиньте, пожалуйста, класс-наследник от XMLExcelReport_RU, в котором есть вставка картинок (+ сопутствующие классы-методы, если необходимы). Ну или хотя бы чуть более подробно: в какой момент вызывается этот insertImage_inCell()? Где и как взять для него drawingsPart? Где в этом методе вообще сама картинка?... Будет прям в точку, если картинка из DocuRef и код от неё. Заранее большое спасибо! |
|
|
| Теги |
| .net, ado, generic, net |
|
|
|