2012-08-29 29 views
10

は、CLRチームが追加さ:.NET 4.5にCallerTypeNameAttributeが存在しないのはなぜですか? .NET 4.5で

一つは、発信者のタイプに追加されなかったのはなぜ?

+0

メンバ名に接頭辞として型名が含まれていますか? – CodesInChaos

+0

@CodesInChaosそれはそれのように見えません。 –

+0

「なぜXにはYがないのですか?」の標準的な応答「なぜXにYがあるのですか?」あなたがリストアップした3つの属性の実際のユースケースが考慮されました。私は興味があります、呼び出し元のタイプのユースケースは何ですか? – hvd

答えて

1

これは設計チーム以外の人が答えるのは難しいですが、私はCallerTypeNameAttributeの強力なユースケースはないと言います。

他の方法では取得できないようなロギングルーチンの拡張情報を提供します。メンバー名はログを許可し、INotifyPropertyChangedの実装を簡素化すると同時に、文字列を検索することなく安全な名前のリファクタリングを可能にします。

typeof(CurrentType).Nameを使用して、指定したメソッドに呼び出し元の型を渡すことができるため、余分な属性を使用するとは限りません。呼び出し元のメンバー名は既にMethodBase.GetCurrentMethodを使用して取得できますが、おそらく常にリフレクションが強制され、typeofはおそらく最適化されているため、安全なリファクタリングとパフォーマンスへの影響が少なくなります。

考えられる属性の代わりにtypeofを使用することの唯一の欠点は、属性アプローチが難読化の影響を受けないことだけです。

関連する問題