Gunakan refleksi C# untuk mendapatkan rentetan nama atribut
Apabila menggunakan pantulan, selalunya perlu mendapatkan nama sifat sebagai rentetan. Ini menjadi sangat diperlukan apabila nama harta mungkin berubah semasa pemfaktoran semula, atau apabila sifat diakses dari jauh melalui antara muka generik.
Kaedah tradisional adalah untuk menentukan nama atribut secara manual sebagai parameter ketiga kaedah seperti ExposeProperty()
. Walau bagaimanapun, pendekatan ini terdedah kepada ralat dan memerlukan pengemaskinian berterusan jika nama harta berubah.
Penyelesaian C# 6.0: nama ungkapan
C# 6.0 menyediakan penyelesaian terbina dalam: nameof
ungkapan. Ungkapan ini membolehkan anda mendapatkan semula nama harta secara langsung sebagai rentetan pada masa penyusunan.
<code class="language-csharp">string name = nameof(SomeClass.SomeProperty);</code>
Ungkapan di atas akan mengembalikan rentetan "SomeProperty" walaupun harta itu kemudian dinamakan semula.
Kod pantulan ringkas
Menggunakan ungkapan nameof
, kami boleh memudahkan kaedah ExposeProperty()
dan menghapuskan keperluan untuk menentukan nama sifat secara manual:
<code class="language-csharp">public void ExposeProperty(string secretName, Type classType, string propertyName) { // 使用反射获取属性信息 PropertyInfo propertyInfo = classType.GetProperty(propertyName); // 使用反射公开属性 RemoteMgr.ExposeProperty(secretName, classType, propertyInfo); }</code>
Kaedah ini memastikan bahawa nama harta yang digunakan untuk akses jauh sentiasa terkini, tanpa mengira perubahan yang dibuat semasa pemfaktoran semula.
Dengan memanfaatkan nameof
ungkapan, pembangun boleh meningkatkan kebolehselenggaraan dan keteguhan kod mereka dengan mendapatkan semula nama sifat secara dinamik sebagai rentetan, menghapuskan potensi pepijat dan memastikan operasi reflektif kekal tepat walaupun selepas pengubahsuaian kod.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Harta sebagai Rentetan dalam C# Reflection?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!