最终解决方案:
public class CustomOptionMetadata : OptionMetadata
{
public CustomOptionMetadata(OptionMetadata optionMetadata) : base()
{
this.Description = optionMetadata.Description;
this.ExtensionData = optionMetadata.ExtensionData;
this.Managed = optionMetadata.IsManaged;
this.Label = optionMetadata.Label;
this.MetadataId = optionMetadata.MetadataId;
this.Value = optionMetadata.Value;
}
public string MappedName { get; set; }
public bool? Managed { get; set; }
}
.
foreach (MappingEntity meAtt in mappingEntityList.FindAll(me => me.ParentID == meEnt.ID))
{
CRMOrganizationEntityAttribute crmOrganizationEntityAttribute = new CRMOrganizationEntityAttribute(meAtt.ID, meAtt.Name, true);
if (meAtt.IsPicklist)
{
List<OptionMetadata> optionMetadataList = GetAttributePickList(meEnt.Name, meAtt.Name);
if (optionMetadataList.Count > 0)
{
crmOrganizationEntityAttribute.OptionMetadataColl = optionMetadataList.Select<OptionMetadata, CustomOptionMetadata>(metadata => new CustomOptionMetadata(metadata)).ToList();
}
else
{
}
}
CRMOrgEnt.CRMAttributeNameList.Add(crmOrganizationEntityAttribute);
}
==================================================== ===========================
我目前正在开发一个地图应用程序,它已经有很多自定义对象。为了限制类的查找和定义,我考虑过扩展我需要的现有类。
它OptionMetaDataCollection
是 Microsoft.Xrm.SDK.Metadata 库的一部分,并且OptionMetaData
在其 Ilist 中有对象。
现在我想创建这样的东西:
public partial class CustomOptionMetadataCollection : OptionMetadataCollection
{
public CustomOptionMetadataCollection() : base() { }
}
public partial class CustomOptionMetadata : OptionMetadata
{
public CustomOptionMetadata() : base() { }
public string MappedName { get; set; }
}
但是我将如何将Ilist<OptionMetaData>
当前位于OptionMetadatacollection
我的IList<CustomOptionMetaData>
. 我知道我可以制作自己的 Ilist CustomOptionMetaDataCollection
,但是我会(在我的其余代码上考虑)列出使用具有更高级集合类的类似东西。
我还想知道如何将OptionMetaDataCollection
对象映射到我的CustomOptionMetadataCollection
. 我可以创建一个循环,但我正在寻找一种更有效的映射方式。
任何帮助深表感谢。