Pet*_*eed 9 enums dynamics-crm dynamics-crm-2011
我使用Erik Pool的实现ICodeWriterFilterService和Manny Grewal的GenerateOption函数作为模型来过滤掉CRMSvcUtil生成的文件中不需要的实体.虽然Erik建议返回true为GenerateOptionSet方法enums集生成的方法,但这样做会复制任何特定实体使用的任何全局选项集(如该帖子的其中一条评论中所述).
为了解决这个问题,我检查是否已经生成了选项集,如果是,我将返回默认选项(大概false是大多数情况下),如下所示.
//list of generated option sets, instantiated in the constructor
private List<string> GeneratedOptionSets;
public bool GenerateOptionSet
(OptionSetMetadataBase optionSetMetadata, IServiceProvider services)
{
if (!GeneratedOptionSets.Contains(optionSetMetadata.Name))
{
GeneratedOptionSets.Add(optionSetMetadata.Name);
return true;
}
return _defaultService.GenerateOptionSet(optionSetMetadata, services);
}
Run Code Online (Sandbox Code Playgroud)
但是当在我的CRM项目中合并生成的文件时,编译错误
Run Code Online (Sandbox Code Playgroud)Cannot convert type 'Microsoft.Xrm.Sdk.OptionSetValue' to 'int'
总是被看起来像的每一行代码抛出
this.SetAttributeValue
("address1_shippingmethodcode", new Microsoft.Xrm.Sdk.OptionSetValue(((int)(value))));
Run Code Online (Sandbox Code Playgroud)
.
作为一种变通方法,我用一个单独的项目中,我过滤我需要的实体运行CRMSvcUtil的论据埃里克表明,更换代码的麻烦的部分(int)(value)(这里value是一个OptionSetValue含)value.Value时生成的文件后,再重新保存文件,并所有问题都消失了.
我的问题是:我是否需要做一些不同的事情来修复这个编译错误与默认CRMSvcUtil生成的文件,而不做像修改生成的文件这样的hackish?
我敢打赌 Guarav 的答案是真正的方法,但在缺乏相关文档的情况下CRMSvcUtil,我被迫使用我的解决方法。(我使用一个单独的项目,在其中过滤我需要的实体,CRMSvcUtil使用 Erik 建议的参数运行,在生成文件后将代码中麻烦的部分(int)(value)(其中value是OptionSetValue)替换为value.Value,然后重新保存文件。)
这不是一个完美的解决方案,但它一直在研究我迄今为止使用过的几个样本。
| 归档时间: |
|
| 查看次数: |
3969 次 |
| 最近记录: |