2014-03-03 57 views
-1

所以我有两个返回语句,我想将它们合并成一个Get方法。我怎么能去这样做正确与我有什么:将两个返回语句合并为一个

在我的API控制器我有:

public IEnumerable<GroupUsers> Get(int id) 
     { 
      return new UserApi().GetUsers(id); 
     } 

,这是我第二次

public int Get() 
     { 
      var _brand = TenantManager.GetType(Request.RequestUri); 
      var _settings = new SettingsService(_brand); 
      return _settings.GetValueAsInt(UserSettings, 13); 
     } 

我怎么能结合他们返回在一个方法中。此外,如果我想创建像viewModel与返回的结果,然后在get方法返回模型?

+1

为两个返回创建一个具有两个属性的新类,然后填充该类的对象并从您的方法返回。 – Habib

回答

1

声明您的视图模型:

public class YourViewModel 
{ 
    public IEnumerable<GroupUsers> GroupUsers { get; set; } 
    public int someIntValue { get; set; } 
} 

现在申报的方法在您的存储库中使用它:

public YourViewModel GetMethodName(int id) 
{ 
    var vm = new YourViewModel(); 

    var _brand = TenantManager.GetType(Request.RequestUri); 
    var _settings = new SettingsService(_brand); 

    vm.GroupUsers = UserApi().GetUsers(id); 
    vm.someIntValue = _settings.GetValueAsInt(UserSettings, 13); 

    return vm; 
} 
1

如果要返回单个对象组合关于几件事情的信息项,使得它的类:

return new GroupAndId { 
    Users = new UserApi().GetUsers(id); 
    Id = _settings.GetValueAsInt(UserSettings, 13); 
}; 

class GroupAndId { 
    public IEnumerable<GroupUsers> Users { get; set; } 
    public int Id { get; set; } 
} 

现在你可以在一个return语句中使用这个类

+0

有了动态性,您不一定必须拥有预定义的对象,只需返回新的{}。子属性也是动态的。如果仅使用一次,那就更简洁一点。 –

+0

如果一个是IEnumerable而另一个是int,我的返回类型是什么? – user3244544

+0

@ChrisDixon在单次返回中结合多个东西通常用于数据传输对象,作为一个小技巧来保存往返。使用'dynamic'在许多框架中都不起作用,并且它也会隐藏来自调用者的太多信息。 – dasblinkenlight

相关问题