使用重载的扩展方法设置数据时出现问题-

我有两种扩展方法:

public static void Fill(this SearchRequest request, ISearchViewModel vm)
{
    request.blabla = vm.blabla;
}

public static void Fill(this IEnumerable<IViewModel> response, SearchResponse searchResponse)
{
 // a list is created here and assigned to response
  List<IViewModel> someResults = new List<IViewModel>();
 // do stuff with search response and someResults
 response = someResults;
}


我先打电话给:

 SearchRequest request = new SearchRequest ();
 request.Fill(criteria);


和request.blabla设置按预期方式。到目前为止,一切都很好。

然后,我尝试:

ResultViewModel result = new ResultViewModel ();
result.searchResult.Fill(searchResponse);


.searchResult是IViewModel的IEnumerable,但是在调用Fill行之后,result.searchResult为null。肯定会调用fill扩展方法,并且肯定是在设置数据。

对于可能出问题的任何想法将不胜感激。

(我使用的是VS 2015,这是一个vNext项目-没有一个不是真正的变量/类名)

最佳答案

responseresult.searchResult的值,它不是该变量的别名。将值设置为response不会使result.searchResult突变。无法编写通过引用而不是通过值传递其隐式参数的扩展方法。

关于c# - C#中的多种重载扩展方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27135920/

10-11 04:39