将对象类型转换为 Microsoft.Xrm.Sdk.OptionSetValue 类型

Converting object type to Microsoft.Xrm.Sdk.OptionSetValue type

我正在编写一个程序,该程序使用 Microsoft Dynamics CRM API 使用从 CRM 提供的 EntityCollection 获得的信息填充表单。我的问题是实体由 KeyValuePair<string, object> 组成,这让人头疼。 kvps 中的某些对象在运行时属于 OptionSetValue 类型,我需要一种实际访问该值的方法,因为 OptionSetValue 需要额外的访问器。

下面是一些示例代码来演示我的问题('e' 是实体):

foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList())
{
    int theResult = thePair.Value;
}

在上面的示例中,程序将编译但会在运行时抛出一个预期,因为它会尝试从 OptionSetValue 转换为 int32

这是我想以某种方式完成的事情:

foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList())
{
    int theResult = thePair.Value.Value;
}

在这种情况下,.Value 访问器将 return 我需要的值,但是由于 C# 编译器直到运行时才知道 thePairOptionSetValue 类型,它不会编译,因为对象类型没有 .Value 成员。

对我的问题有任何想法或需要澄清吗?

我在 post 之后不到 5 分钟就解决了这个问题,所以输入这些内容似乎让我更清楚了。您可以简单地使用 (OptionSetValue)

进行类型转换
foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList())
{
    int theResult = (OptionSetValue)thePair.Value.Value;
}