У меня есть файл HTTPSystemDefinitions.cs в проекте C #, который в основном описывает старые ISAPI Windows для использования управляемым кодом.
Сюда входит полный набор структур, относящихся к ISAPI, не все или которые используются кодом. При компиляции все элементы полей этих структур вызывают предупреждение, подобное следующему: -
Поле предупреждения 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader' никогда не назначается и всегда будет иметь значение по умолчанию null
или
Предупреждение Поле UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus никогда не используется
Можно ли их отключить #pragma warning disable
? Если да, то каковы будут соответствующие номера ошибок? Если нет, я могу что-то еще сделать? Имейте в виду, что я должен делать это только для этого файла, важно, чтобы я видел подобные предупреждения, исходящие от других файлов.
редактировать
Пример структуры: -
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)]
убедиться, что макет памяти правильный (в текущей реализации он будет даже без этого атрибута, но AFAIK это не гарантируется). Если я правильно помню, компилятор C # обнаруживает наличие этого атрибута и автоматически подавляет эти предупреждения, поскольку знает, что поля должны быть там для взаимодействия. (Я мог ошибаться в этом, поэтому отправляю как комментарий вместо ответа).
StructLayout
. Это кажется чище, чем подавление самих предупреждений.