C# 在Android中从Xamarin PCL访问类可以正常工作,但在iOS中不能
我是Xamarin的新手,目前也在与C#作斗争。 我正在开发一个跨平台的Xamarin应用程序(用于Android iOS),目前我已经使用REST服务创建了一个PCL,用于简单的GET方法。 目标是根据查询参数loginName PCL代码:C# 在Android中从Xamarin PCL访问类可以正常工作,但在iOS中不能,c#,android,ios,xamarin,portable-class-library,C#,Android,Ios,Xamarin,Portable Class Library,我是Xamarin的新手,目前也在与C#作斗争。 我正在开发一个跨平台的Xamarin应用程序(用于Android iOS),目前我已经使用REST服务创建了一个PCL,用于简单的GET方法。 目标是根据查询参数loginName PCL代码: public async Task<CustomerResponse> GetCustomerAsync(string inLoginName) { var url = new StringBuilde
public async Task<CustomerResponse> GetCustomerAsync(string inLoginName)
{
var url = new StringBuilder().Append(urlProtocol)
.Append("://").Append(urlDomain)
.Append("/").Append(urlBase)
.Append("/").Append(pathParamVersion)
.Append("/").Append(pathParamLanguage)
.Append("/").Append(urlGetCustomer);
url.Append("?").Append(queryParamClientKey).Append("=").Append(queryParamClientVal)
.Append("&").Append(queryParamChannelKey).Append("=").Append(queryParamChannelVal)
.Append("&").Append(queryParamLoginNameKey).Append("=").Append(inLoginName);
System.Diagnostics.Debug.WriteLine(url);
CustomerResponse customerResponse = null;
var client = new HttpClient();
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(url.ToString());
if (response.IsSuccessStatusCode)
{
customerResponse = await response.Content.ReadAsAsync<CustomerResponse>();
}
else {
System.Diagnostics.Debug.WriteLine("Error in response");
}
return customerResponse;
}
button.Click += async delegate {
button.Enabled = false;
CustomerResponse customerResponse = await RESTWSManager.getInstance().GetCustomerAsync("steven");
button.Text = string.Format("{0} clicks! {1}", count++, customerResponse.customer.lastName);
button.Enabled = true;
};
iOS本机代码(在ViewController.cs中)
问题
问题在于iOS应用程序,而在安卓系统中,它工作得非常完美。我想不出问题出在哪里
在ViewController.cs中,CustomerResponse显示“找不到类型或命名空间”,即使它是公共类。(在android中,我没有看到错误)
有人能帮我解决这个问题吗?是“CustomerResponse.cs”在Android项目中还是在PCL项目中?如果
CustomerResponse
在PCL中,请确保将PCL添加为iOS项目的引用。另外,如果您进行构建,是否真的会出现构建错误?如果您使用的是XamarinStudio,我经常会看到类名显示为红色,好像找不到它们一样,但它构建并运行良好。这可能是您的问题。请用string.Format()替换该URL构建;谢谢大家!我核实了参考资料,PCL,但没有运气。我重新启动了Visual Studio,它开始工作!!
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// Perform any additional setup after loading the view, typically from a nib.
Button.AccessibilityIdentifier = "myButton";
Button.TouchUpInside += async delegate {
CustomerResponse customerResponse = await RESTWSManager.getInstance().GetCustomerAsync("steven");
var title = string.Format ("{0} clicks!", count++, customerResponse.customer.lastName);
Button.SetTitle (title, UIControlState.Normal);
};
}