Попытка избежать предупреждения FxCop «Не вызывать зарезервированные исключения» из библиотеки C ++ / CLI, поэтому я решил разбить и написать свой собственный тип исключения.
[Serializable]
public ref class CaptureException : public Exception
{
public:
CaptureException() : Exception() {}
CaptureException(String^ message) : Exception(message) {}
CaptureException(String^ message, Exception^ inner) : Exception(message, inner) {}
protected:
CaptureException(System::Runtime::Serialization::SerializationInfo^ info, System::Runtime::Serialization::StreamingContext^ context) : Exception(info, context) {}
};
Это не компилируется с указанием
error C2664: 'System::Exception::Exception(System::String ^,System::Exception ^)' : cannot convert parameter 1 from 'System::Runtime::Serialization::SerializationInfo ^' to 'System::String ^'
Я не уверен, почему я получаю эту ошибку. Разве у C ++ / CLI нет полного класса исключений? Я просто пытаюсь реализовать стандартные конструкторы для моего исключения, и в C # это выглядит так и прекрасно компилируется.
[Serializable]
public class CaptureException : Exception
{
public DatabaseConnectionException() { }
public CaptureException (string message) : base(message) { }
public CaptureException (string message, Exception inner) : base(message, inner) { }
protected CaptureException (
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}