繁体   English   中英

无法隐式转换类型'System.Collections.Generic.List

[英]Cannot implicitly convert type 'System.Collections.Generic.List

我有这个应用程序,我试图将列表传递给另一个类。 我一直在收到错误

Cannot implicitly convert type 'System.Collections.Generic.List<eko_app.LoginForm.Business>' to 'System.Collections.Generic.List<eko_app.GlobalClass.Business>'

该列表由Json生成。

登录课程

   private void Connect()
        {
            try
            {
                serverUrl = "https://eko-app.com/Users/login/username:" + usernameEntered + "/password:" + passwordEntered + ".json";

                var w = new WebClient();
                var jsonData = string.Empty;

                // make the login api call
                jsonData = w.DownloadString(serverUrl);

                if (!string.IsNullOrEmpty(jsonData))
                {
                    // deserialize the json to c# .net
                    var response = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(jsonData);

                    // Get the sessionId
                    GlobalClass.SessionId = string.Empty;
                    GlobalClass.SessionId = response.response.SessionId;

                    if (GlobalClass.SessionId != null)
                    {                      
                        var businesses = response.response.Businesses;

                        GlobalClass.Username = "";
                        GlobalClass.Username = usernameEntered;                        

                        GlobalClass.Businesses = null;
                        GlobalClass.Businesses = businesses; **<-----error thrown here**

                        HomeForm homeForm = new HomeForm();
                        this.Hide();
                        homeForm.Show();
                    }
                    else
                    {
                        Console.WriteLine("Login failed");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private class Business
        {
            public string businessID { get; set; }
            public string businessName { get; set; }
        }

        private class Response
        {
            [JsonProperty("sessionId")]
            public string SessionId { get; set; }

            [JsonProperty("businesses")]    
            public List<Business> Businesses { get; set; }
        }

        private class Messages
        {
            public string sessionId { get; set; }
            public List<Business> businesses { get; set; }
        }

        private class RootObject
        {
            public Response response { get; set; }
            public Messages messages { get; set; }
        }

我有另一个班:全球班

namespace eko_app
{
    static class GlobalClass
    {
       ...some code     

        public class Business
        {
            private string businessID { get; set; }
            private string businessName { get; set; }
        }

        private static List<Business> businesses = null;

        public static List<Business> Businesses
        {
            get { return businesses; }
            set { businesses = value; }
        }
    }
}

我究竟做错了什么? 该错误在GlobalClass.Businesses = businesses;的第一类中GlobalClass.Businesses = businesses;

看来您有两个相同的类,称为Business ,一个嵌套在GlobalClass ,另一个嵌套在LoginForm

尽管两个类看起来都相同,但它们不能彼此分配。 而且,基于这些类的集合也不能彼此分配。

考虑删除这些类之一(例如LoginForm的私有类),并将其所有使用替换为GlobalClass.Business

您有两个完全不同的类,它们都恰好被命名为Business 一个在这里:

static class GlobalClass
{
    public class Business
    {
        private string businessID { get; set; }
        private string businessName { get; set; }
    }
}

还有一个在这里:

public class LoginForm
{
    private class Business
    {
        public string businessID { get; set; }
        public string businessName { get; set; }
    }
}

尽管这两个类大多相同,但它们静态编译为两个完全不同的东西。 任何数量的类似命名都不会改变它。

可以编写方法将一个转换为另一个,但这可能只是隐藏问题而不是实际解决它。 我想您想做的就是选择哪一个是您的实际Business类,并仅使用它。 因此,您可以弃用第二个并将Response属性更改为:

public List<GlobalClass.Business> Businesses { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM