追記:質問内容が不明瞭だったので弾きたい処理と場所を明確にして、意図が伝わりやすいようにReciever側をstaticに変更して、Sender側の関数はコンストラクタに変更しました
class Other{ void other(){ //弾きたい処理 Receiver.Receive(new Sender()); } } class Sender{ public Sender(){ //通したい処理 Receiver.Receive(this); //弾きたい処理 Receiver.Receive(new Sender()); } } static class Receiver{ static public void Receive(Sender sender){ if(//引数と送ってきた側のインスタンスが一致しない){ return; } //メイン処理 } }
このときに引数がthisでないというか自分以外を渡そうとしてきたときに弾いてやるようにしたいのですが、何か良い方法はありますでしょうか
どういうシナリオで、どこではじきたいのですか? それによって話が変わってくると思うのですが。
不明瞭で申し訳ありません。不定期に多数生成されるSenderをReciever側で管理して逐一比較したりしています。Recieve関数内で弾きたいです
Reciever クラス、Recieve メソッドを static に変更したようですが、static にする必要がありますか? 本当はどうしたいのでしょう? 最初の質問にあったようにインスタンスクラス、メソッドにしたいということはないのですか?
あくまでデバッグ用に仕込むものでしょうか?(性質上、コードを書く時点で注意できれば、製品版でこのチェックをかける必要はない、とも読めます)
SurferOnWwwさん>例を増やすのにクラスを増やしてしまったのと、元はシングルトンなのでstaticに変更しました。今回Recieve側を新しく作ることはありません。
maisumakunさん> はい。実際のところ注意していれば何の問題もありませんしほぼ間違わないと思うのですが。publicにしたのでどこからでも呼べてしまって少し気持ちが悪いのと、送り主を担保する方法が何かないかと気になっているのがメインです。
回答5件
あなたの回答
tips
プレビュー