У меня есть базовый метод в базовом классе, подобный следующему:
protected bool TryConvertTo<TIn, TOut>(TIn objIn, out TOut objOut)
where TIn : MyObjectBase
where TOut : MyObjectBase
{
objOut = objIn is TOut ? (TOut) (object) objIn : default (TOut);
return !ReferenceEquals(objOut, default (TOut));
}
Предположим, что я проверяю null везде, где это необходимо, и соответственно обрабатываю любые исключения приложения. Разве это плохая практика - «двойное приведение» объекта к объекту, а затем к TOut? Если это плохая практика, есть ли какие-то технические причины или просто отражение общей проблемы дизайна?
Я считаю, что использование целесообразно с учетом моего варианта использования, но поскольку я обычно не использую такое выражение, я подумал, что было бы безопасно узнать мнение сообщества.