最終的解決:
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ライブラリの一部であり、そのIlistにオブジェクトOptionMetaData
があります。
今、私はこのようなものを作成したいと思います:
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
ます。ループを作成することはできますが、マッピングを行うためのより効率的な方法を探しています。
どんな助けでも大歓迎です。