我有一个类似下面代码的扩展方法:
public static void RemoveDetail<TMaster, TChild>(this TMaster master, TChild child)
where TMaster : class, IMaster<TChild>
where TChild : class, IDetail<TMaster>;
我有两个类
public class Principal : IMaster<Permission>
{
public virtual IEnumerable<Permission> Permissions { get; }
}
以及
public class Permission : IDetail<Principal>
我从一个由方法 public static void Foreach<T>(this IEnumerable<T> source, Action<T> action)
接受的操作中调用了 RemoveDetail:
aPrincipal.Permissions.Foreach(x => aPrincipal.RemoveDetail(x));
ReSharper建议我将此调用替换为方法组,例如:
aPrincipal.Permissions.Foreach(aPrincipal.RemoveDetail);
这在 VS2013 及之前的版本中运行良好,但在 VS2015 中编译失败,显示:
'Principal' 不包含名为 'RemoveDetail' 的定义,并且找不到接受类型为 'Principal' 的第一个参数的扩展方法 'RemoveDetail'(您是否缺少 using 指令或者程序集引用?)
有人有建议吗? 我是否需要更新所有用法并让 ReSharper 避免这种替换?
List<T>.ForEach
复现这个问题。z
的类型是什么?您确定没有漏掉引用或静态关键字吗? - Panagiotis Kanavos