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

http://ufcpp.net/

Parse<T>

with one comment

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

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

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

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

void Method<T>(string s)
{
    var x = Parser.Parse<T>(s);
}

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

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

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

Written by ufcpp

2012年8月16日 @ 02:08

カテゴリー: C#

Tagged with , ,

コメント / トラックバック1件

Subscribe to comments with RSS.

  1. Reblogged this on Test better, code better and commented:
    こういう風にDelegateを使うのか。なるほど。

    horimasa

    2012年8月16日 at 13:02


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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