11

私は次のような拡張メソッドを持っています

public static void RemoveDetail<TMaster, TChild>(this TMaster master, TChild child)
        where TMaster : class, IMaster<TChild>
        where TChild : class, IDetail<TMaster>;

そして、私には2つのクラスがあります

public class Principal : IMaster<Permission>
{
        public virtual IEnumerable<Permission> Permissions { get; }
}

public class Permission : IDetail<Principal>

method によって受け入れられた Action からRemoveDetailを呼び出しますpublic static void Foreach<T>(this IEnumerable<T> source, Action<T> action);

aPrincipal.Permissions.Foreach(x => aPrincipal.RemoveDetail(x));

ReSharper は、この呼び出しを次のようなメソッド グループに置き換えることを提案しています

aPrincipal.Permissions.Foreach(aPrincipal.RemoveDetail);

これは VS2013 以前では正常に機能しましたが、VS2015 でのコンパイルでは失敗します。

「プリンシパル」には「RemoveDetail」の定義が含まれておらず、タイプ「プリンシパル」の最初の引数を受け入れる拡張メソッド「RemoveDetail」が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

誰にも提案がありますか?この置き換えを避けるために、すべての使用法を更新し、ReSharper を作成する必要がありますか?

4

3 に答える 3

-2

VS2013でどのように機能したかわかりません。 あなたの Action ではないRemoveDetailメソッドです。TMethodMyClass

それは次のようなものでなければなりません

z.ForEach(x => master.RemoveDetail(x);
于 2015-09-02T10:24:12.380 に答える