我想得到这个方法的结果:bool authentication(string log,string pass)和这个methode:string role(string log,string pass)来测试authentifcation 这就是我所做的:
private void bntValideAuthen_Click(object sender, RoutedEventArgs e)
{
client.AuthentificationCompleted += client_AuthentificationCompleted;
client.RoleCompleted += client_RoleCompleted;
ServiceConsum.Service1Client client = new ServiceConsum.Service1Client();
string rol=client.RoleAsync(txtLogin.text,txtpass.text);
bool auth = client.AuthentificationAsync(txtLogin.text,txtpass.text);
if((auth==true)&&(role=="admin"))
{
NavigationContext.Equals(new Uri("/Views/admin/starAdmin.xaml", UriKind.Relative));
}
else
{
message.BOX("error");
}
}
它给出了这个错误: 无法隐式转换类型' void'到'字符串'
答案 0 :(得分:1)
以下代码启动异步调用 - 它不返回字符串 - 它是一个void方法 - 这是你的错误。
client.RoleAsync(txtLogin.text,txtpass.text)
您将获得结果作为方法client_RoleCompleted的参数。您已使用以下代码订阅了RoleCompleted事件:
client.RoleCompleted += client_RoleCompleted
答案 1 :(得分:0)
解决方案是: 在第二个事件中添加一个步骤,如:
void client_RoleCompleted(object sender, RoleCompletedEventArgs e) {
role = e.Result.ToString();
Thread.Sleep(1000);
}