使用重载的扩展方法设置数据时出现问题-
我有两种扩展方法:
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项目-没有一个不是真正的变量/类名)
最佳答案
response
是result.searchResult
的值,它不是该变量的别名。将值设置为response
不会使result.searchResult
突变。无法编写通过引用而不是通过值传递其隐式参数的扩展方法。
关于c# - C#中的多种重载扩展方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27135920/