Как мне заставить CRMSvcUtil.exe генерировать недублированные, безошибочные наборы опций с ранним связыванием?

я использую реализацию Erik Pool ICodeWriterFilterService и функцию Мэнни Грюала GenerateOption в качестве модели для фильтрации нежелательных сущностей в файле, который CRMSvcUtil ] генерирует.Хотя Эрик рекомендует возвращать true для метода GenerateOptionSet для генерации перечислений для наборов параметров, это дублирует любые глобальные наборы параметров, которые используются какой-либо конкретной сущностью. (как упоминалось в одном из комментариев к этому сообщению).

Чтобы решить эту проблему, я проверяю, был ли уже сгенерирован набор параметров, и если да, я возвращаю параметр по умолчанию (предположительно false для большинства случаев), как показано ниже.

//list of generated option sets, instantiated in the constructor
private List GeneratedOptionSets;

public bool GenerateOptionSet
    (OptionSetMetadataBase optionSetMetadata, IServiceProvider services)
{
    if (!GeneratedOptionSets.Contains(optionSetMetadata.Name))
    {
        GeneratedOptionSets.Add(optionSetMetadata.Name);
        return true;
    }

    return _defaultService.GenerateOptionSet(optionSetMetadata, services);
}

Но при включении сгенерированного файла в мои проекты CRM возникла ошибка компиляции

 Невозможно преобразовать тип «Microsoft.Xrm.Sdk.OptionSetValue» в «int»

всегда вызывается каждой строкой кода, который выглядит как

this.SetAttributeValue
    ("address1_shippingmethodcode", new Microsoft.Xrm.Sdk.OptionSetValue(((int)(value))));

.

В качестве обходного пути я использую отдельный проект, в котором я фильтрую нужные мне сущности, запускаю CRMSvcUtil с аргументами, которые предлагает Эрик, заменяю проблемную часть кода (int) (value) (где значение - это OptionSetValue ) со значением . Значение после создания файла, а затем повторно сохраните файл, и все проблемы исчезнут.

У меня такой вопрос: нужно ли мне сделать что-то по-другому, чтобы исправить эту ошибку компиляции с помощью файла, сгенерированного по умолчанию CRMSvcUtil , без выполнения таких хакерских действий, как изменение этого сгенерированного файла?

9
задан Peter Majeed 20 January 2012 в 18:37
поделиться