Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法隐式转换类型';System.Collections.Generic.List_C#_Json - Fatal编程技术网

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

C# 无法隐式转换类型';System.Collections.Generic.List,c#,json,C#,Json,我有一个应用程序,试图将列表传递给另一个类。我一直在犯错误 Cannot implicitly convert type 'System.Collections.Generic.List<eko_app.LoginForm.Business>' to 'System.Collections.Generic.List<eko_app.GlobalClass.Business>' 无法将类型“System.Collections.Generic.List”隐式转换为“Sys

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

Cannot implicitly convert type 'System.Collections.Generic.List<eko_app.LoginForm.Business>' to 'System.Collections.Generic.List<eko_app.GlobalClass.Business>'
无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”
该列表由Json生成

登录类
private void Connect()
{
尝试
{
服务器URL=”https://eko-app.com/Users/login/username:“+usernameEntered+”/密码:“+passwordEntered+”.json”;
var w=新的WebClient();
var jsonData=string.Empty;
//进行登录api调用
jsonData=w.DownloadString(serverUrl);
如果(!string.IsNullOrEmpty(jsonData))
{
//将json反序列化为c#.net
var response=Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
//获取会话ID
GlobalClass.SessionId=string.Empty;
GlobalClass.SessionId=response.response.SessionId;
if(GlobalClass.SessionId!=null)
{                      
var业务=response.response.business;
GlobalClass.Username=“”;
GlobalClass.Username=输入的用户名;
GlobalClass.Businesss=null;

GlobalClass.Business=Business;***您似乎有两个相同的类,名为
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; }
    }
}
尽管这两个类基本上是相同的,但它们静态编译成两个完全不同的东西。任何相似的命名都不会改变这一点

您可以编写方法将一个转换为另一个,但这可能只是隐藏问题,而不是实际解决问题。我想您要做的是选择哪一个是您的实际
业务
类并仅使用该类。因此,您可能会弃用第二个,并将
响应
属性更改为类似以下内容:

public List<GlobalClass.Business> Businesses { get; set; }
公共列表业务{get;set;}

@Sachin这有什么不对?@SriramSakthivel:通常没什么,尽管我觉得这种
GlobalClass
安排在这种情况下非常可疑…@David Yep,我同意你的看法。这很糟糕,或者显示出幼稚的设计。但他的评论听起来像是质疑这是不可能的或者类似的。可能的解决方案:创建一个明确的/简单的icit converter,仅使用一个类并删除另一个,使用AutoMapper或仅使用上一个对象的字段创建一个新对象。@Jeroenvanevel您错过了简单的解决方案:重用相同的对象type@JeroenVannevel更好的方法是删除其中一个类,然后使用另一个类。GlobalClass.Business
看起来是一个很好的cand我告诉我。是的,我在一秒钟后添加了它。删除一个是最简单的,可能也是最好的,但它看起来很简单,这可能不可能。谢谢你的帮助。非常感谢你的回答。
public class LoginForm
{
    private class Business
    {
        public string businessID { get; set; }
        public string businessName { get; set; }
    }
}
public List<GlobalClass.Business> Businesses { get; set; }