Parse<T>

<<ここまでが元記事>>

Themeの特徴なのかreblogしたらそのまま全部張り付けられてる。

忘れたくないのでreblogしておく
reflectionを使うんだろうなあ、というところまではたどりついたとしてもdelegateを使ってこの形にするのは思いつかない気がする。こういうところで理解の差が出るんだな。

++C++; // 未確認飛行 C ブログ

今日、twitter経由で悩んでる方いらっしゃったから書いたけども、なんか結構な頻度でこんなコード書いてるなーというもの。

ジェネリック メソッド内で、ジェネリック型引数に対して、

Method<T>( s)
{
    x = T.Parse(s);
}

的なことがしたいけどもできない(ジェネリックでは静的メソッドの解決ができない)のがめんどくさいなぁということで、

Method<T>( s)
{
    x = .Parse<T>(s);
}

的なメソッドを用意したいというもの。(実際にはParse処理で例外を出したくないので、とを用意。)

一応、リフレクションを使ってできるものの、TryParseを呼ぶたびにリフレクションはしたくないので、静的コンストラクターでデリゲート化して持っておくというやり方。

このくらい標準であってもいい気もするものの、エラーの出方が微妙(対応していない型に対して使うとき、ほんとはビルド エラーになってほしいのに、実行時例外になる)なので、どうしたものか。

元の投稿を表示

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。