Собственно вопрос, реализация GetObjectData там есть, но выдает предупреждение. Полагаю что формат декларации GetObjectData не совпадает, но формат брал с MSDN.
Код класса:
[Serializable]
public ref struct EmuDevException
: public Exception, ISerializable
{
private:
int __line;
String ^ __msg;
GameData::EmuDevError __id;
System::Exception ^ __ex;
protected:
EmuDevException::EmuDevException(
SerializationInfo ^info,
StreamingContext ^context)
{
if (info == nullptr)
return;
this->Id = (GameData::EmuDevError)(info->GetByte(L"Id"));
this->Line = info->GetInt32(L"Line");
this->Msg = info->GetString(L"Msg");
}
public:
property String ^ Msg
{
String ^ get() { return __msg; }
void set(String ^v) { __msg = v; }
};
property GameData::EmuDevError Id
{
GameData::EmuDevError get() { return __id; }
void set(GameData::EmuDevError v) { __id = v; }
};
property int Line
{
int get() { return __line; }
void set(int v) { __line = v; }
};
property System::Exception ^ InnerExcept
{
System::Exception ^ get() { return __ex; }
};
[System::Security::Permissions::SecurityPermission(
System::Security::Permissions::SecurityAction::LinkDemand,
Flags = System::Security::Permissions::SecurityPermissionFlag::SerializationFormatter,
Unrestricted = false
)]
void GetObjectData(
SerializationInfo ^info,
StreamingContext ^context)
{
if (info == nullptr)
return;
info->AddValue(L"Id", __id);
info->AddValue(L"Line", __line);
info->AddValue(L"Msg", __msg);
}
EmuDevException::EmuDevException(GameData::EmuDevError _id) : __id(_id), __line(-1), __msg(String::Empty), __ex(nullptr) {}
EmuDevException::EmuDevException(GameData::EmuDevError _id, int _line) : __id(_id), __line(_line), __msg(String::Empty), __ex(nullptr) {}
EmuDevException::EmuDevException(GameData::EmuDevError _id, int _line, String ^_msg) : __id(_id), __line(_line), __msg(_msg), __ex(nullptr) {}
EmuDevException::EmuDevException(GameData::EmuDevError _id, int _line, System::Exception ^_ex) : __id(_id), __line(_line), __msg(String::Empty), __ex(_ex) {}
};
Полный вывод ошибки:
MSBUILD : warning CA2240: Microsoft.Usage : Добавьте реализацию GetObjectData к типу 'EmuDevException'.
Сообщение анализатора кода CA2240 в данном случае выводится из-за того, что метод GetObjectData не помечен как переопределяемый (виртуальный). Так как базовый класс Exception содержит свою реализацию GetObjectData, необходимо также добавить override. Правильное объявление:
void virtual GetObjectData(SerializationInfo^ info, StreamingContext^ context) override
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пусть у меня во ViewModel имеется событие с аргументом:
Использую данную функцию для того чтобы поменять значение флагаТо есть имею переменную которая принимает true or false
У меня есть презентацияВ неё с помощью c# хочу сделать например перетаскивание объектов или что то другое