c# - C# 中的多个重载扩展方法

标签 c# extension-methods asp.net-core

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

我有两种扩展方法:

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 项目 - 没有那些不是真正的变量/类名)

最佳答案

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

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

相关文章:

asp.net-mvc-4 - 我应该将扩展方法放在 ASP.Net MVC 中的哪个文件夹中?

c# - 旧 C++ 应用程序和新 C# 应用程序之间的桥梁

c# - 从我自己的控制台应用程序在第 3 方 exe 上执行方法

arrays - 带闭包的数组扩展

c# - 在负载均衡器后面运行的 Identity Server 4

c# - 引用 Razor 类库中的类

c# - asp.net 核心默认代理

c# - 如何从后面的代码访问xaml中声明的全局变量

c# - Asp Core 3 - 如何在 Controller 方法中允许可为空的 [FromBody] 对象

c# - 可空泛型扩展方法