将对象类型转换为 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# 编译器直到运行时才知道 thePair
是 OptionSetValue
类型,它不会编译,因为对象类型没有 .Value
成员。
对我的问题有任何想法或需要澄清吗?
我在 post 之后不到 5 分钟就解决了这个问题,所以输入这些内容似乎让我更清楚了。您可以简单地使用 (OptionSetValue)
进行类型转换
foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList())
{
int theResult = (OptionSetValue)thePair.Value.Value;
}
我正在编写一个程序,该程序使用 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# 编译器直到运行时才知道 thePair
是 OptionSetValue
类型,它不会编译,因为对象类型没有 .Value
成员。
对我的问题有任何想法或需要澄清吗?
我在 post 之后不到 5 分钟就解决了这个问题,所以输入这些内容似乎让我更清楚了。您可以简单地使用 (OptionSetValue)
进行类型转换foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList())
{
int theResult = (OptionSetValue)thePair.Value.Value;
}