私は実行時に定義するデリゲートを持っています。辞書に特定のキーが含まれているかどうかを確認したい。デリゲートパラメータの1つが辞書へのref
であるため、辞書は常に最新のバージョンです(フリーズコピーではありません)。C#デリゲート参照なしでオブジェクトフィールドの値を使用
しかし、参照するキーはobject
フィールドですが、そのオブジェクトにref
を渡したくありません。私はちょうどフィールド値をつかみ、それが定数(凍結コピー)であるかのように使用したい。
これは正確なコードスニペットです。私はnetControllerにrefを渡します。これはContainsID()
を使って何かをチェックすることができます。 IDパラメータはmsg
オブジェクトから来ますが、コンテナオブジェクトへの参照なしで値を使用したいだけです。
nc
このデリゲートに範囲にありますが、msg
ではありません。これは可能か、すべてをパラメータとして渡す必要がありますか?
注:私は辞書ですが、実際には辞書のようなオブジェクトです。 ContainsID()
はContainsKey()
のラッパーです。この部分については心配しないでください。
?これをデリゲートにどのように格納しますか? – Oliver
@Oliver編集をご覧ください。 – dasblinkenlight
私は厚いですか、それともまだ何か不足していますか? '' 'Func <コントローラ、ブール> MakeChecker(メッセージmsg){ return nc => nc.ObjectRegister.ContainsID(msg.parentObjectID); } '' 'は私のために妥協しません。私は.net 2.5を使用しています、申し訳ありませんが、私は言及を忘れてしまった。 メッセージは、コンテキストでは無効な型です。 が必要です。または= returnステートメントが、メイン関数を含む(および問題を引き起こしている)からの戻りを試みています。 – Oliver