Плагин Dynamics CRM Общие переменные - Объект или Массив

У нас есть сценарий, в котором нам нужно рассчитать несколько компонентов оплаты и разделить плагин до и после этапа. Итак, мы создали такой объект.

class FeeCalculation
    {
        public string TotalFee { get; set; }
        public string FilingFee { get; set; }
        public string LegalFee { get; set; }
        public string RecordFee { get; set; }
    }

До сих пор мы использовали компонент с единым взносом и переменную с общим доступом. При попытке назначить весь объект - результат не плодотворен.

context.SharedVariables.Add("fees", fcObject);

Есть ли способ достичь этого ожидаемого результата?

2 ответа

Решение

Инфраструктура плагина должна иметь возможность сериализации / десериализации объектов, находящихся в вашем SharedVariables коллекция. Он не знает о пользовательских типах, таких как FeeCalculation класс и, следовательно, не может его сериализовать.

Используйте примитивные типы, распространенные типы.NET (например, List десятичных знаков должны работать) или типы CRM (Entity, Money так далее.). Приятно отметить, что SharedVariables Коллекция - это коллекция пар ключ-значение. Итак, почему бы просто не добавить к нему элементы с ключами, такими как "TotalFee", "FilingFee" и т. Д.?

Я пытался поделиться IEnumerable<Guid>, но коллекции вроде List не сработало.

Конечно, вы всегда можете сериализовать в строку, но код вашего плагина действительно не должен иметь дело с сериализацией общих типов.

После некоторых проб и ошибок я остановился на массивах, т.е. Guid[].

Другие вопросы по тегам