ホームページ > バックエンド開発 > C++ > 特定の属性 (AllowMultiple = false) で装飾された C# プロパティを効率的に見つけるにはどうすればよいですか?

特定の属性 (AllowMultiple = false) で装飾された C# プロパティを効率的に見つけるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-28 02:28:09
オリジナル
970 人が閲覧しました

How Can I Efficiently Find C# Properties Decorated with a Specific Attribute (AllowMultiple = false)?

C# プロパティでの属性検索の最適化

.NET リフレクションの世界では、特定の属性で装飾されたプロパティのリストを取得することが頻繁に必要になります。ここでの質問は、AllowMultiple が false に設定されている、MyAttribute 属性を持つプロパティの識別を扱います。

提示された最初のアプローチでは、t.GetProperties() を使用してすべてのプロパティを反復処理し、その後、各プロパティの属性を調べるループが続きました。 prop.GetCustomAttributes(typeof(MyAttribute), true) を使用します。この方法は機能しますが、複数の属性インスタンスを作成する必要があるため、非効率的になる可能性があります。

LINQ の Where 拡張メソッドを活用した改良されたソリューションを次に示します。

var props = t.GetProperties().Where(
                prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
ログイン後にコピー

このアプローチにより、属性が簡素化されます。各プロパティに対して Attribute.IsDefined を直接呼び出すことでプロセスをチェックします。これにより、必要な属性をインスタンス化せずにその存在を効率的に検証できます。これにより、特に多数のプロパティを持つ型のパフォーマンスが大幅に向上します。

さらに、結果として得られる props 変数は PropertyInfo オブジェクトの IEnumerable であるため、必要に応じてさらなるフィルタリングや操作が可能になります。

以上が特定の属性 (AllowMultiple = false) で装飾された C# プロパティを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート