Échec de la génération du code généré par CRM 2011 à l’aide de ICodeWriterFilterService

À l’aide de l’exemple de code disponible à l’ adresse http://erikpool.blogspot.com/2011/03/filtering-generated-entities-with.html, j’ai modifié ceci afin que GenerateEntity et GenerateOptionSet aient le code

return optionSetMetadata.Name.ToLowerInvariant().StartsWith("myprefix");

Cela génère les types, y compris des énumérations pour les jeux d’options. L’implémentation réelle de l’ensemble d’options dans l’entité ne l’utilise pas cependant, mais j’obtiens ce qui suit:

  [Microsoft.Xrm.Sdk.AtsortingbuteLogicalNameAtsortingbute("myprefix_fieldname")] public Microsoft.Xrm.Sdk.OptionSetValue myprefix_FieldName { get { Microsoft.Xrm.Sdk.OptionSetValue optionSet = this.GetAtsortingbuteValue("myprefix_fieldname"); if ((optionSet != null)) { return ((Microsoft.Xrm.Sdk.OptionSetValue)(System.Enum.ToObject(typeof(Microsoft.Xrm.Sdk.OptionSetValue), optionSet.Value))); } else { return null; } } set { this.OnPropertyChanging("myprefix_FieldName"); if ((value == null)) { this.SetAtsortingbuteValue("myprefix_fieldname", null); } else { this.SetAtsortingbuteValue("myprefix_fieldname", new Microsoft.Xrm.Sdk.OptionSetValue(((int)(value)))); } this.OnPropertyChanged("myprefix_FieldName"); } } 

Évidemment, le fait de convertir OptionSetValue en entier dans le setter ne comstack pas; je suppose qu’il devrait générer la propriété avec un type qui correspond à l’énumération générée, mais ne le fait pas. Que dois-je faire pour corriger cela?

Il semble qu’il y ait eu un bogue dans crmsrvcutil qui a été corrigé depuis. Mon code pour les propriétés OptionSet ressemble maintenant à ceci:

 [Microsoft.Xrm.Sdk.AtsortingbuteLogicalNameAtsortingbute("prioritycode")] public Microsoft.Xrm.Sdk.OptionSetValue PriorityCode { get { return this.GetAtsortingbuteValue("prioritycode"); } set { this.OnPropertyChanging("PriorityCode"); this.SetAtsortingbuteValue("prioritycode", value); this.OnPropertyChanged("PriorityCode"); } } 

Et je ne reçois aucune erreur lors de la définition de OptionSetValue …