【发布时间】:2015-01-24 00:00:00
【问题描述】:
使用重载的扩展方法设置数据时遇到问题 -
我有两种扩展方法:
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 项目 - 不是那些不是真正的变量/类名)
【问题讨论】:
-
我建议你使用你编译的真实代码。使用
Main方法的简短且独立的示例将是理想的。 -
第二个扩展方法的参数重复了response。将您用于分配的代码放入响应(第一个参数)
-
当您说某些东西不起作用时,让我们看看。使用发布的伪代码,我们不能轻易提供帮助。发布不起作用的实际代码。或者至少是不起作用的代码(MVCE)。
-
@rejnev - 我已经更新了问题,如果不清楚,抱歉。
-
@Azat - 我已经稍微更新了代码。结果是明确定义的。在调用 Fill 之前,我还尝试将 result.searchResult 设置为一个新的空列表。它回来是空的。
标签: c# extension-methods asp.net-core