個人的備忘録

調べたり思いついたりした事の置き場

2016-04-01から1ヶ月間の記事一覧

privateなコンストラクタしか持たないクラスをリフレクションで生成する

テスト等で、Privateなコンストラクタしか持たないクラスを生成したくなることがある。 コンストラクタが引数を取らない場合、Activatorを利用すれば簡単にできる。 class Test { private Test() { } } var obj = (Test)Activator.CreateInstance(typeof(Tes…

ConditionalWeakTableを利用して拡張メソッドに状態を持たせる

拡張メソッドを利用してインタフェースに実装をもたせる場合、インタフェースが公開しているもの以外の状態は利用できない。 が、ConditionalWeakTableを利用することでそれに近いことが実現できる。 class Parameter { public string str { get; set; } } i…