Обычно вы должны вызывать функциональные возможности производного класса, используя виртуальные функции.Однако, если вам действительно нужно проверить тип, сделайте следующее:
DataRowChangeEventArgs* foo = dynamic_cast<DataRowChangeEventArgs*>(arg);
if (foo) {
// is a DataRowChangeEventArgs
}
Конечно, вы также можете свернуть это в одну строку:
if (DataRowChangeEventArgs* foo = dynamic_cast<DataRowChangeEventArgs*>(arg)) {
// is a DataRowChangeEventArgs
}
(Если выиспользуется C # вообще, dynamic_cast
на указателе во многом похож на оператор as
в C # --- он возвращает указатель на целевой тип, если это уместно, в противном случае ноль.)