1

リフレクションを使用して、このコードをより適切に記述したいと思います。これでIsSearchableandIsEditable関数ができましたが、このコードをリファクタリングして、c.Searchableとc.Editableの部分を取得できますか?

このような機能は10個あり、必要なのは1つだけです。唯一の異なる部分は、チェックするブールプロパティ、c.Searchableまたはc.Editableです。

  bool searchable = conditions
                .Select(c => c.Searchable)
                .SingleOrDefault();

  bool editable = conditions
                    .Select(c => c.Editable)
                    .SingleOrDefault();
4

1 に答える 1

3

リフレクションの使用はやり過ぎです。Editableまたはに一致する条件がリストにあるかどうかを確認していると仮定すると、Searchableおそらく次の構文を使用する必要がありAny()ます...

次のような方法を使用できます

public bool CheckCondition(IEnumerable<Condition> conditions, Func<Condition, bool> predicate)
{
    return conditions.Any(predicate);
}

次のように使用します。

var isSet = CheckCondition(conditions, c => c.Editable);

しかし、あなたは自分自身をあまり救っていません。Any()毎回書くだけでも構いません。例えば、

var isEditable = conditions.Any(c => c.Editable);
于 2013-02-13T06:43:59.750 に答える