ホームページ > バックエンド開発 > C++ > C# リフレクションでプロパティ名を文字列として取得するにはどうすればよいですか?

C# リフレクションでプロパティ名を文字列として取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-12 10:23:44
オリジナル
799 人が閲覧しました

How Can I Get a Property Name as a String in C# Reflection?

C# リフレクションを使用して属性名の文字列を取得します

リフレクションを使用する場合、多くの場合、プロパティ名を文字列として取得する必要があります。これは、リファクタリング中にプロパティ名が変更される可能性がある場合、またはプロパティが汎用インターフェイスを介してリモートでアクセスされる場合に特に必要になります。

従来の方法は、ExposeProperty() などのメソッドの 3 番目のパラメーターとして属性名を手動で指定することです。ただし、この方法ではエラーが発生しやすく、プロパティ名が変更された場合は継続的に更新する必要があります。

C# 6.0 ソリューション: 式の名前

C# 6.0 は、組み込みソリューションである nameof 式を提供します。この式を使用すると、コンパイル時にプロパティ名を文字列として直接取得できます。

<code class="language-csharp">string name = nameof(SomeClass.SomeProperty);</code>
ログイン後にコピー

上記の式は、後でプロパティの名前が変更された場合でも、文字列「SomeProperty」を返します。

簡略化されたリフレクション コード

nameof 式を使用すると、ExposeProperty() メソッドを簡素化し、プロパティ名を手動で指定する必要がなくなります。

<code class="language-csharp">public void ExposeProperty(string secretName, Type classType, string propertyName)
{
    // 使用反射获取属性信息
    PropertyInfo propertyInfo = classType.GetProperty(propertyName);

    // 使用反射公开属性
    RemoteMgr.ExposeProperty(secretName, classType, propertyInfo);
}</code>
ログイン後にコピー

このメソッドにより、リファクタリング中に行われた変更に関係なく、リモート アクセスに使用されるプロパティ名が常に最新であることが保証されます。

nameof 式を活用することで、開発者はプロパティ名を文字列として動的に取得し、潜在的なバグを排除し、コードを変更した後でもリフレクション操作が正確に維持されるようにすることで、コードの保守性と堅牢性を向上させることができます。

以上がC# リフレクションでプロパティ名を文字列として取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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