C# 如何返回多个类的对象?

C# 如何返回多个类的对象?,c#,C#,我需要反序列化json,因此我创建了以下类结构: public class Detail { public string code { get; set; } public string type { get; set; } } public class User { public string name { get; set; } public string surname { get; set; } public string lastna

我需要反序列化json,因此我创建了以下类结构:

public class Detail
{
     public string code { get; set; }
     public string type { get; set; }
}

public class User
{
     public string name { get; set; }
     public string surname { get; set; }
     public string lastname { get; set; }
}

public class Tenant
{
     public List<User> user  { get; set; }
     public List<Detail> detail { get; set; }
}

public class RootObject
{
     public Tenant tenant { get; set; }
}
Tenant
对象同时包含class
user
detail
。现在user是一个用户列表,detail包含每个用户的详细信息列表。但不幸的是,我收到了以下错误消息:

Can not be converted implicitly the 'User.Tenant' type 'System.Collections.Generic.List <User.Tenant>' Tenant 
无法隐式转换为“User.Tenant”类型“System.Collections.Generic.List”Tenant
在这一行:
返回obj.tenant


我猜是我弄错了发回数据的类型。但是我如何解决这个问题呢?

取决于您真正需要的是什么

如果需要返回租户对象,请将方法签名/返回更改为此

public Tenant getTenant()
{
    var obj = JsonConvert.DeserializeObject<RootObject>("json");
    return obj.tenant;
}
public List<User> getUsers()
{
    var obj = JsonConvert.DeserializeObject<RootObject>("json");
    return obj.tenant.user; //?
}
公共租户getTenant()
{
var obj=JsonConvert.DeserializeObject(“json”);
归还承租人;
}
如果您需要用户,请更改您的方法签名/返回到此

public Tenant getTenant()
{
    var obj = JsonConvert.DeserializeObject<RootObject>("json");
    return obj.tenant;
}
public List<User> getUsers()
{
    var obj = JsonConvert.DeserializeObject<RootObject>("json");
    return obj.tenant.user; //?
}
公共列表getUsers()
{
var obj=JsonConvert.DeserializeObject(“json”);
返回obj.tenant.user;/?
}
但是,我建议您更改属性名称,使其具有正确的大写字母。如果您返回的是用户对象列表,那么将该属性称为用户而不是用户是有意义的。考虑一下您的数据模型,每个链接是一对一还是一对多,等等,并相应地编码/命名


MS命名建议()。

问题在于,您的方法签名表明您将返回一个
列表
,而您的返回类型明确表示它是一个
租户

public List<Tenant> searchUser() { var obj = JsonConvert.DeserializeObject<RootObject>("json"); return obj.tenant; //Type is Tenant (according to RootObject) } public Tenant searchUser() { var obj = JsonConvert.DeserializeObject<RootObject>("json"); return obj.tenant; //Type is Tenant (according to RootObject) } public class RootObject { public List<Tenant> tenant { get; set; } }
  • 否则您必须更改
    租户
    根对象
    类型:

    public List<Tenant> searchUser() { var obj = JsonConvert.DeserializeObject<RootObject>("json"); return obj.tenant; //Type is Tenant (according to RootObject) } public Tenant searchUser() { var obj = JsonConvert.DeserializeObject<RootObject>("json"); return obj.tenant; //Type is Tenant (according to RootObject) } public class RootObject { public List<Tenant> tenant { get; set; } }
    searchUser返回租户列表,但您试图从中返回单个租户。只需创建一个租户列表,从JSON对象中选择相关租户并将其作为列表返回即可。或者,如果确实需要用户对象,则返回列表。您可以直接将它们添加到列表中,也可以使用LINQ。@ManoDestra-uhm我认为您的意思是
    var-obj=JsonConvert.DeserializeObject(“json”)对吗?如果是,我已经尝试过了,我得到了:
    obj不包含租户的任何定义
    目前您的单一RootObject中有一个单一租户对象。如果希望返回租户,则必须将方法签名更改为返回租户,而不是列表。如果您想要用户,则返回列表。如果这是您需要的完整列表,那么只需
    返回obj.tenant.user
    (您的属性名称应为大写):@IlDrugo:您能发布一个示例JSON文件以便我们调试它吗?只需将此行更改为:
    public List searchUser()
    这行
    public Tenant searchUser()
    您是指类属性吗?我在一本c#book上读到过,这是一个很好的选择,使用CamelCase。或及:)