0
私のプロジェクトを.NET 3.5にアップグレードしたばかりで、LINQには完全な使い方があると思いました。私のアプリケーションには、実行時に開いているウィンドウを追跡するウィンドウマネージャがあり、FindOpenWindowsジェネリックメソッドを追加しようとしています。これまでに行ったこと:ジェネリック条件付きLINQ
List<Form> openWindows;
public List<T> FindOpenWindows<T>(Predicate<T> constraint)
{
var foundTs = from form in openWindows
where constraint(form)
&& form.Created
select form;
return foundTs as List<T>;
}
しかし、私は "Delegate System.Predicateに無効な引数がいくつかあります。"呼び出し側は、彼らが探しているウィンドウの正確種類の一覧を取得するように、私は、関数は非ジェネリックしなかった理由がある
public List<T> FindOpenWindows<T>(Predicate<Form> constraint)
{
var foundTs = from form in openWindows
where constraint(form as Form)
&& form.Created
select form;
return foundTs as List<T>;
}
:だから私は、のような方法を書き直しました。
LINQおよびラムダ式が新しくなったので、FindOpenWindowsの呼び出しで述語のコードを書く方法を正確にはわかりません。私は明らかに、渡されているFormがnullではないことを確認できる必要があり、探している型と一致するかどうかを確認する必要があります。
ありがとう、それは完璧に動作します!私は呼び出す必要があることがわかりました: リスト mainWindows = Program.windowManager.FindOpenWindows ((フォームf)=> fはfrmMainです); –
jasonh