Плагин 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[]
.