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 サイトの他の関連記事を参照してください。