Saya memiliki file HTTPSystemDefinitions.cs dalam proyek C # yang pada dasarnya menjelaskan ISAPI windows yang lebih lama untuk dikonsumsi oleh kode yang dikelola.
Ini termasuk seluruh Struktur yang relevan dengan ISAPI tidak semua atau yang dikonsumsi oleh kode. Saat kompilasi, semua anggota lapangan dari struktur ini menyebabkan peringatan seperti berikut: -
Bidang Peringatan 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader' tidak pernah ditetapkan, dan akan selalu memiliki nilai default null
atau
Peringatan Bidang 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus' tidak pernah digunakan
Bisakah ini dinonaktifkan dengan #pragma warning disable
? Jika demikian, apa angka kesalahan yang sesuai? Jika tidak, apakah ada hal lain yang bisa saya lakukan? Ingatlah bahwa saya hanya melakukan apa ini untuk file ini, yang penting saya mendapatkan peringatan seperti ini datang dari file lain.
Edit
Contoh struct: -
struct HTTP_FILTER_PREPROC_HEADERS
{
//
// For SF_NOTIFY_PREPROC_HEADERS, retrieves the specified header value.
// Header names should include the trailing ':'. The special values
// 'method', 'url' and 'version' can be used to retrieve the individual
// portions of the request line
//
internal GetHeaderDelegate GetHeader;
internal SetHeaderDelegate SetHeader;
internal AddHeaderDelegate AddHeader;
UInt32 HttpStatus; // New in 4.0, status for SEND_RESPONSE
UInt32 dwReserved; // New in 4.0
}
[StructLayout(LayoutKind.Sequential)]
memastikan tata letak memori sudah benar (dalam implementasi saat ini bahkan tanpa atribut ini, tetapi AFAIK tidak dijamin). Jika saya ingat dengan benar, kompilator C # mendeteksi keberadaan atribut ini dan secara otomatis menyembunyikan peringatan tersebut karena ia tahu bahwa bidang harus ada di sana untuk interop. (Saya bisa saja salah tentang ini, karenanya memposting sebagai komentar, bukan jawaban).
StructLayout
. Tampaknya lebih bersih daripada menekan peringatan itu sendiri.