我试图通过使用try / catch函数来解决它,但是我收到错误..
无法将类型bool转换为NewtonSoft.Json.Linq.JObject。存在显式转换(您是否错过了演员?)
..当我尝试在捕获时返回false。这是代码:
static public async Task<JObject> getInfo ()
{
var httpClientRequest = new HttpClient ();
try {
//connection
var result = await httpClientRequest.GetAsync ("localhost");
var resultString = await result.Content.ReadAsStringAsync ();
var jsonResult = JObject.Parse (resultString);
return jsonResult;
} catch {
//no connection
return false; //ERROR: Cannot implicity convert type bool to NewtonSoft.Json.Linq.JObject. An explicit conversion exists (are you missing a cast?)
}
}
答案 0 :(得分:4)
您的方法签名是
static public async Task<JObject> getInfo ()
所以你不能在捕获物上返回一个bool。你必须返回一个JObject,或者为null。
答案 1 :(得分:1)
JObject
是一个真正的对象。 bool
不是对象。
但是,您可以返回JToken
:
static public async Task<JToken> GetInfoAsync()
{
var httpClientRequest = new HttpClient ();
try {
...
} catch {
//no connection
return new JValue(false);
}
}
我还将您的方法重命名为GetInfoAsync
,以跟随appropriate naming conventions。
答案 2 :(得分:0)
也许你的意思是return null
?编译器抱怨,因为您的方法声称返回Task<JObject>
并且您尝试返回bool
值。
(显然,如果你返回null
,你必须确保调用代码知道在该实例中该做什么。另一种选择是允许抛出异常并将其捕获更高。)
答案 3 :(得分:0)
正确的做法是抛出Exception
并在UI层中捕获它并向用户显示警告。
你也可以这样做:return default(JObject);
而不是return false;