4

以下のように機能するラムダによって定義されたプロパティの名前を取得するヘルパー メソッドがあります。

ExpressionUtil.GetName((Thing t) => t.Property); // returns "Property"

これを拡張メソッドに変換したいので、構文は次の形式になります。

((Thing t) => t.Property).GetName(); // wont compile : operator '.' cannot be applies to operand of type 'lambda expression'

ただし((Thing t) => t.Property)、ラムダのようにこれを行うことはできないようです(まだ式やFuncではありません)。ラムダに直接適用される拡張メソッドを作成する方法はありますか? そうでない場合、なぜこれが悪いことなのですか?

4

2 に答える 2

1

インスタンス化を導入する低コストで、Action に拡張メソッドを作成できます。私は時々それを使用し、コードは読み取り可能です。このコードが存在する理由は、洗練されていない、腐った NAS です :-[

new Action(() =>
    {
        if (File.Exists(newFullPath))
            File.Delete(newFullPath);

        File.Move(oldFullPath, newFullPath);
    })
.Try(attemps: 2, exceptionValidator: (exception, attempt, attempts) =>
    {
        var throwIt = (attempt == attempts);
        if (!throwIt)
            Thread.Sleep(500);

        // .. tracing ./. throw
        return (throwIt);
    });

念のため…若くない投稿でも。

于 2014-09-25T23:21:17.540 に答える