28歳になりました。
エッチなコンテンツを合法的に鑑賞可能になって10年が経過したと思うと、何だか感慨深いものがあります。居酒屋でおごってもらうなど、ちょっと良いこともありました。
今年はゲームソフトを1本も購入していません。まさか自分が全くゲームで遊ばなくなる日が来るとは、10代の頃には想像もできませんでした。
こういう現象は、社会人になって患う中二病のようなものだと聞くので、またそのうち遊ぶようになるのかもしれません。
C#では、クラス自身が持つイベントでなければ、イベントの発生を登録されたイベントハンドラに通知することができません。
どうしても外部のクラスから、自分以外のクラスが持つイベントを発生させたいときはどうすれば良いのか試してみました。リフレクションは後から読み返した時にメンテナンス不可能なほど複雑になりそうなのでやめました。
class Hoge
{
//いろいろイベントを定義
public delegate void LoadEventHandler(object sender);
public event LoadEventHandler Loaded;
public Action GetEventTrigger(eventName)
{
Action trigger;
//公開しても良いトリガであれば返す
swtich (eventName.ToLower())
{
case "loaded" :
trigger = () =>
{
if (this.Loaded != null) this.Loaded(this);
}
break;
case "initialized" :
trigger = () =>
{
if (this.Initialized != null) this.Initialized(this);
}
break;
default :
throw new ArgumentException();
}
return trigger;
}
}
var hoge = new Hoge();
var trigger = hoge.GetEventTrigger("Loaded");
//イベントの通知
trigger();
Actionデリゲートで返してやれば、外部からイベントをフックすることも可能ですね。
そもそも外部のクラスからイベントを発生させるとか設計を疑った方がいいですねわかります。
最近のツッコミ
参号館
日記(ariyasacca)
あら、お誕生日おめでとうございます。<br><br>>外部のクラスからイベントを発生させる<br>Listener つくればいいと思います。 .NET の場合はそれが event なんだっけ?.NET に取り組むなら「プログラミングMicrosoft .NET Framework 第2版」買うといいと思います。読んでいたらごめんなさい。
そいえば.NETの本は一冊も読んだことがなかったです。いろいろとお作法を間違えたままになってないか心配になってきたお・・・。
28歳の誕生日、おめでとうございます!
ありがとうございます!
あらおめでとん!なんかゲームやろうぜ!(ワシも特にやっていない)
ありがとうございます! 来年こそゲームやるぜ!(今年はあきらめた)