Показать сообщение отдельно
Старый 16.05.2018, 13:54   #30  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Navision
Цитата:
Сообщение от belugin Посмотреть сообщение
Я ругаюсь не на использование коммона, а на его тихий даункаст.

Попробуйте в C# написать

X++:
Object o;
List l;

o = l; // номально
[B]l = (List)o; // номально[/B]
l = o as List; // нормально
[B]l = o; // ошибка компиляции[/B]
Вспоминая ошибки молодости 15 летней давности
InventTrans inventTrans = _custTrans; // должна быть ошибка компиляции
InventTrans inventTrans = (СustTrans)common; // должна быть ошибка компиляции

Как понимаю вопрос в таком downcast
void foo(Common _commonCustTrans)
{
InventTrans inventTrans = (InventTrans)_commonCustTrans;
}

Тут ничего не поделать, все законно. Имена переменных ничего не значат, а передается родитель.
void foo(Parent _childA)
{
ChildB childB = (ChildB)_childA;
}

А вот если передавать конкретный тип, а не common, то да можно жаловаться
void foo(ChildA_childA) // вместо common например CustTable _custTable
{
ChildB childB = (ChildB)_childA; // обязана ругаться
}