我正在覆盖基类库中的方法.但是,在我重写的实现中,我正在使用全新的HttpClient,它全部基于异步方法.因此我必须将我的方法标记为异步,这意味着我需要将方法的返回参数从字符串更改为任务.然而,编译器给出了一个错误:"返回类型必须是'string'才能匹配被覆盖的成员...."
public class BaseClass
{
public virtual string GetName()
{
...
}
}
public class MyClass : BaseClass
{
public override async Task<string> GetName()
{
HttpClient httpClient = new HttpClient();
var response = await httpClient.GetAsync("");
if (response.IsSuccessStatusCode)
{
var responseContent = response.Content;
return await responseContent.ReadAsStringAsync();
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,显而易见的解决方案是将BaseClass中的GetName()的返回类型更改为Task <string>,但我无法控制BaseClass,因为它是一个外部库;
我目前的解决方案是以同步方式使用HttpClient类,即更改MyClass,如下所示:
public class MyClass : BaseClass
{
public override string GetName()
{
HttpClient httpClient = new HttpClient();
var response = httpClient.GetAsync("");
if (response.Result.IsSuccessStatusCode)
{
var responseContent = response.Result.Content; …Run Code Online (Sandbox Code Playgroud) 我有一个网页,显示HTML表格中的项目列表.列表上方是一个表单,允许用户通过AJAX(使用Ajax.BeginForm)将新项添加到列表中.当数据通过AJAX发布到控制器时,我将新项添加到数据库后端,并通过部分视图生成新的表行,然后将其附加到现有表.
当添加新项目的表单包含错误时,我想将表单呈现回Web浏览器并显示它.
所以这就是问题:是否可以在控制器中指定UpdateTargetId?目前,我从控制器返回的任何视图都插入到同一目标中,但我想根据从控制器返回的任何视图更新不同的目标(即不同的UpdateTargetId).
我刚开始使用ReactiveUI.我有以下课程:
public class MainViewModel : ReactiveObject, IRoutableViewModel
{
private string shareText;
public ReactiveCollection<SharingAccountViewModel> SelectedAccounts { get; private set; }
public string ShareText
{
get { return shareText; }
set
{
this.RaiseAndSetIfChanged(ref shareText, value);
}
}
public IReactiveCommand ShareCommand { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在以下条件为真时允许命令执行:
我尝试了以下但它不起作用,因为连接到命令的按钮永远不会启用:
ShareCommand = new ReactiveCommand(this.WhenAny(viewModel => viewModel.ShareText,
viewModel => viewModel.SelectedAccounts,
(x, y) => !String.IsNullOrEmpty(x.Value) && y.Value.Count > 0));
Run Code Online (Sandbox Code Playgroud)
如果我只检查ShareText属性,它可以正常工作:
ShareCommand = new ReactiveCommand(this.WhenAny(viewModel => viewModel.ShareText,
(x) => !String.IsNullOrEmpty(x.Value)));
Run Code Online (Sandbox Code Playgroud)
我查看了ReactiveUI问题的答案:将CanExecute与ReactiveCommand一起使用
基于此我尝试了以下内容: …