2014-03-03 59 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

相關問題