如何从作为字典的对象中获取特定值

本文关键字:获取 对象 字典 | 更新日期: 2023-09-27 18:33:23

我将用一个例子来展示我的问题:

ChromeDriver chrome = new ChromeDriver();
chrome.Capabilities.GetCapability("chrome");

返回类型为 Dictionary<string, object> 的对象。在这个对象中有一个键userDataDir我需要它的值。

我是否必须首先将对象转换为字典,或者我可以做一些单行,例如:

chrome.Capabilities.GetCapability("chrome").GetType().GetProperty("userDataDir").GetValue()

上面的行不仅仅是为了澄清而编译的。

如何从作为字典的对象中获取特定值

你可以用as在一行上做演员表

var userDataDir = (chrome.Capabilities.GetCapability("chrome") as Dictionary<string, object>)["userDataDir"];

当然,这会使您可能遇到空引用异常。 在 C# 6 中,可以使用 null 条件来缓解这种情况。

var userDataDir = (chrome.Capabilities.GetCapability("chrome") as Dictionary<string, object>)?["userDataDir"];

但是,您将不知道null是字典中的值,还是因为强制转换失败而null的值。 最好的办法是分多行执行此操作。

var dic = chrome.Capabilities.GetCapability("chrome") as Dictionary<string, object>;
if(dic == null)
{
    // The capability isn't a dictionary.
}
else
{
    var userDataDir = dic["userDataDir"];
}

如果chrome.Capabilities.GetCapability("chrome");的返回类型是Dictionary<string, object>

您可以通过将返回的对象强制转换为字典来执行以下操作:

var capability = (Dictionary<string, object>)chrome.Capabilities.GetCapability("chrome");
var userDataDir = capability["userDataDir"];