2013-07-20 55 views
2

我有以下代码:在C#中将参数传递给Func <>的最佳方法是什么?

public void Test(Request request, Func<IEnumerable<Building>> buildings) 
{ 
    vm.Buildings = Helper.GenerateDropdownList(request.BuildingId,() => buildings()); 
} 

我现在想要一个额外的参数传递给buildings()回调

public void Test(Request request, Func<IEnumerable<Building>> buildings) 
{ 
    var cityId = GetCity(); 
    vm.Buildings = Helper.GenerateDropdownList(request.BuildingId,() => buildings(cityId)); 
} 

什么是输入该参数的正确方法?

回答

3

您的buildings代表需要是Func<T, TResult>而不是Func<TResult>

假设cityIdint

public void Test(Request request, Func<int, IEnumerable<Building>> buildings) 
{ 
    var cityId = GetCity(); 
    m.Buildings = Helper.GenerateDropdownList(request.BuildingId, 
              () => buildings(cityId)); 
} 
+0

你能解释一下多一点关于如何将这些额外的城市的说法步入回调 – leora

+0

+1,但我想指出,'()=>建筑(GetCity())'稍微清洁一些,因为你不需要关于局部变量的闭包。 –

相关问题