使用重载扩展方法设置数据时出现问题 -
我有两种扩展方法:
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。确定正在调用填充扩展方法,确定正在设置数据。
任何关于可能出错的想法都将不胜感激。
(我使用的是 VS 2015,这是一个 vNext 项目 - 没有那些不是真正的变量/类名)
最佳答案
response
是 result.searchResult
的值,它不是那个变量 的别名。将值设置为 response
不会改变 result.searchResult
。无法编写通过引用而不是通过值传递其隐式参数的扩展方法。
关于c# - C# 中的多个重载扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27135920/